抽象类
抽象方法必须用abstract关键字进行修饰叫做抽象类。
如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。
public abstract class Text01 {
System.out.println("抽象类");
}
抽象类:
1,抽象类里面不是必须有抽象方法
2,一个类里面有抽象方法,这个类必须是抽象类
抽象类和普通类没什么区别
抽象方法:
1,方法只有声明没有方法体; 声明即规定方法的三要素:方法名,参数列表,返回值类型
2,要使用abstract关键字进行修饰
定义抽象方法的意义:
1,能够对子类进行约束:子类必须实现父类的抽象方法,或者子类声明为抽象类:
2,抽象类通过定义抽象方法就实现了一种规范,要求他的子类必须具备某种功能,具体如何实现以子类的具体实现为准
接口
接口是java语言中一种引用类型,是方法的集合,如果说类是内部封装了成员变量,构造方法和成员方法,那么接口主要是封装方法,包含抽象方法,默认方法和静态方法,私有方法。
接口的定义,它与定义类方式相似,但是使用implements关键字,它会被编译成.class文件,但一定明确它并不是类,二十另外一种引用数据类型。
他不能创建对象,但是可以被实现(implements,类似于被继承)。
public abstract USB{
void read();
void write();
public default void run(){
System.out.println("默认方法");//子类会被继承
}
public static void run1(){
//静态方法 子类不会被继承,子类也无法调用
}
private void fun2(){
//私有方法 子类不会被继承 jdk9可以用
}
}
一个类只能继承一个抽象类,而一个类却可以实现多个接口。
多态
多态是继封装,继承之后,面向对象的第三大特征。
定义:是指同一行为,具有多个不同表现形式。(调用同样的方法,执行的是不同的功能)
1,发生再有继承或者实现接口的情况下
2,在子类中对方法进行了重写
3,父类引用指向子类对象 父类类型 变量名=new 子类对象();
public class MultiDemo {
public static void main(String[] args) {
// 多态的引用,就是向上转型
Animals dog = new Dog();
dog.eat();
Animals cat = new Cat();
cat.eat();
// 如果要调用父类中没有的方法,则要向下转型
Dog dogDown = (Dog)dog;
dogDown.watchDoor();
}
}
class Animals {
public void eat(){
System.out.println("动物吃饭!");
}
}
class Dog extends Animals{
public void eat(){
System.out.println("狗在吃骨头!");
}
public void watchDoor(){
System.out.println("狗看门!");
}
}
class Cat extends Animals{
public void eat(){
System.out.println("猫在吃鱼!");
}
}