继承->多态
extends
public class Persion { public String name = "Roly_Fisn"; //修饰符如果是 privute时子类不可以访问父类变量和方法 public void print(){ System.out.println("我是父类"); } } public class Student extends Persion { // public String name = "于延闯";//1 当子类和父类变量重名时,当引用变量为子类时无法访问父类变量 要么引用变量为父类型要么用super关键字访问 @Override public void print(){ System.out.println("我是子类"); } public void print2(){ System.out.println("子类调用父类方法"); super.print(); } } 方法重写 方法名相同 参数类表相同 修饰符不可以是 private public > protected > default >private 子类的修饰范围必须要比父类要>= 不可以重写的方法 private私有 static属于类 final 不可以修改 super super调用(父类)构造方法时,必须出现在子类 构造方法中的 第一行。 无参时默认调用。当父类有参数的构造方法 必须要有参数 无参被干掉了 this 代表当前对象 区别 this只要在当前对象就可以使用(调用当前对象的方法) super在存在继承关系时才可以使用(构造方法可以,但是不可以调用‘方法’)
方法多态
public class Car { public void run(){ System.out.println("car: run" ); } public void printCar(){ System.out.println("car-----" ); } } public class Bus extends Car{ public void run(){ System.out.println("bus: run" ); } public void printBus(){ System.out.println("bus-----" ); } } public class Scar extends Car{ public void run(){ System.out.println("car: run" ); } } public static void test02(){ Car bus = new Bus(); Car scar = new Scar(); bus.run();//调用被重写的方法 scar.run();//调用被重写的方法 bus.printCar();//调用car的方法 也调用不了 printBus()//也就是说子类转为父类会丢失方法 ((Bus) bus).printBus();//强转可以调用 高转低 } //对象的实例类型是确定的 new bus() 他就是一个bus类型 //但是其引用类型就不确定了 可以是父类型(就是多态 有多种形态) //对象可以执行哪些方法只有 引用类型决定(父类) 实例类型不搭噶 ****子类的引用对象可以调用父类和子类的所有方法(除了父类中被重写的)。 //多态的出现:重写方法 instacenof关键字 可判断俩有无继承关系
抽象
abstract
public abstract class Person { public abstract void doSomething(); } public class Student extends Person { @Override public void doSomething() { System.out.println("继承抽象类必须重写其中的抽象方法"); } } #抽象类不可以new #抽象类中也可以写普通方法 #抽象方法必须在抽象类中
接口
接口里的都是常量 public static final
接口中没有方法 只有抽象
必须实现接口里的所有方法