3.5Java博客

南笙酒味 提交于 2020-03-06 01:10:39

抽象类

对抽象类的理解: 抽象类字面意思就是抽象的类(这不废话吗 ),然后什么叫抽象的类,就是可能他并不是一个实际存在的东西,而可能是动物,植物这种较为抽象的对象。
抽象类的作用: 比如说一个动物父类,他下面有很多的子类如狗、猫等。但是如果有用户或者测试,他new了一个动物类,那这是什么东西?从而引申出抽象类,既不可初始化不可创建对象的类。只能被继承。关键字为abstract。
抽象类的需要注意的地方:

  1. 如果声明出一个抽象的方法,必须将类也标记成抽象的。
  2. 不能再非抽象类中拥有抽象方法。即使只有一个抽象方法,此类必须为抽象类。
  3. 抽象的方法没有内容,只是单纯为了多态。
  4. 实现抽象的方法,就如同覆盖方法。
    Animal2类
package Animal2;
public abstract class Animal2 {
 public void eat(String name){
  System.out.println(name+" is eating");
 };
 public abstract void be_friendly(String name);
}

Cat类

package Animal2;
public class Cat extends Animal2{
 public void be_friendly(String name) {
  System.out.println(name+" is friendly to people");
 }
 
}

text类

package Animal2;
public class text {
 public static void main(String [] args){
  Cat n=new Cat();
  n.be_friendly("xiaojiu");
  n.eat("Tom");
 }
}

结果:

xiaojiu is friendly to people
Tom is eating

而有的时候,我们需要一个子类带一些特有的属性。比如动物下的野生动物子类与宠物子类,他们之间的行为可能有着很大的不同。那么我们需要添加一些方法到野生动物类,添加一些方法到宠物类。那么Java中的接口可以完美解决这个问题。
接口:
接口中只有抽象的方法,100%的纯抽象类。
Pet接口:

package Animal2;
public interface Pet {
 abstract void Is_friendly();
 abstract void Is_Dog(int i);
}

Animal2类

package Animal2;
public abstract class Animal2 {
 int ans;
 public void f()
 {
  System.out.println(ans);
 }
 public void eat(String name) {
  System.out.println(name + " is eating");
 };
 public abstract void be_friendly(String name);
}

Dog类

package Animal2;
public class Dog extends Animal2 implements Pet {
 public void Is_friendly() {
  System.out.println("OKK");
 }
 public void Is_Dog(int vis) {
  if (vis == 1)
   System.out.println("True");
  else
   System.out.println("False");
 }
 public void be_friendly(String name) {
  System.out.println(name + " is friendly to people");
 }
 public static void main(String[] args) {
  Dog a = new Dog();
  a.Is_Dog(1);
  a.Is_friendly();
  a.be_friendly("Tom");
 }
}

运行结果

True
OKK
Tom is friendly to people
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!