
抽取相同的属性
(相同成员变量和相同成员方法)
格式:
public class 子类 extends 父类{}
public class Student extends People{}
好处:提高复用
特点:只能有一个亲生父亲(补充Object为终类:包含toString,equals等等)
构造器:默认super();
访问特点:就近原则
重写: 名称,形参不变
@Override
public void run(Animal a){
System.out.println(a.name+"再跑");
}
(private<缺省 不完整的设计图,实质就是类(设计图)ctrl+o 本质:强调重写,如果不重写完所有抽象方法,其子类会变成抽象类 修饰符 abstract class 类名{ 修饰符 abstract 返回值类型 方法名称(形参列表); } public abstract class Animal{ public abstract void run(); } 有得有失:获得了抽象方法,失去了创建对象能力 New 接口就是规范 ctrl+i 格式: // JDK8.0 public interface 接口名{ //常量 public static final String SCHOOL_ID = "13140103"; //抽象方法 public abstract void run(); } public class 实现类(子类) implenments 接口名{ } 特点: 1.不能实例化 2.接口于接口的关系:多继承,一个接口可以同时继承多个接口 继承:同类对象,同一行为,表现出不同样式 接口:非同类对象,同一行为,表现出不同样式 前提满足: 有继承/实现关系;有父类引用指向子类对象;有方法的重写 格式: 父类类型 父类对象名称 = new 子类构造器; 接口 干爹对象名称 = new 实现类构造器; Animal a = new Dog(); 优势:解耦合 劣势:不能使用子类(实现类) 独有功能 Animal a = new Cat(); Dog d = (Dog)a;//ClassCastException 判断真实类型:instanceof 变量名 instanceof 真实类型 总结一句话:写有抽象方法的,或者可以写入抽象方法的,都不可以创建对象 即:抽象类和接口不能创建(New)对象
抽象类:abstract
接口:interface
多态
if (a instanceof Cat){
Cat c = (Cat) a;
c.ClimbTree();
}else if (a instanceof Dog) {
Dog d = (Dog) a;
d.LookDoor();
}