抽象类
对抽象类的理解: 抽象类字面意思就是抽象的类(这不废话吗 ),然后什么叫抽象的类,就是可能他并不是一个实际存在的东西,而可能是动物,植物这种较为抽象的对象。
抽象类的作用: 比如说一个动物父类,他下面有很多的子类如狗、猫等。但是如果有用户或者测试,他new了一个动物类,那这是什么东西?从而引申出抽象类,既不可初始化不可创建对象的类。只能被继承。关键字为abstract。
抽象类的需要注意的地方:
- 如果声明出一个抽象的方法,必须将类也标记成抽象的。
- 不能再非抽象类中拥有抽象方法。即使只有一个抽象方法,此类必须为抽象类。
- 抽象的方法没有内容,只是单纯为了多态。
- 实现抽象的方法,就如同覆盖方法。
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
来源:CSDN
作者:快乐风男hasaki
链接:https://blog.csdn.net/qq_45472201/article/details/104681766