语法:子类的名字 extends 父类的名字
父类: package FeiGe;
public class Uncle {
private String name;
private int age;
public void faHongbao(){
System.out.println("舅舅发红包");
}
}
子类一: package FeiGe;
public class UncleOne extends Uncle {
public void chouyan(){
System.out.println("大舅喜欢抽烟");
}
public void faHongbao(){
System.out.println("大舅家道中落,发不起红包了,改送祝福了");
}
}
子类二: package FeiGe;
public class UncleTwo extends Uncle{
public void hejiu(){
System.out.println("大舅喜欢喝酒");
}
// 方法重写 复写 覆写
public void faHongbao(){
System.out.println("二舅不仅发红包,还送茅台");
}
}
1.子类能够继承到父类所有的不是的私有的属性和方法
2.子类能够复写父类的方法,如果还没有复写,调用的是父类的方法,子类一旦复写,优先调用复写后的子类方法
3.除了复写,子类可以扩充父类没有的方法
优点:
1:实现代码的复用
2: 有利于子类代码的扩展
多重继承 不允许 语法错误
public class Temp extends UncleOne , UncleTwo(){
}
多层继承
package FeiGe;
public class Uncle {
private String name;
private int age;
public void faHongbao(){
System.out.println("舅舅发红包");
}
}
package FeiGe;
public class UncleOne extends Uncle {
public void chouyan(){
System.out.println("大舅喜欢抽烟");
}
public void faHongbao(){
System.out.println("大舅家道中落,发不起红包了,改送祝福了");
}
}
public class UncleOneSon extends UncleOne(){
public void faHongbao(){
System.out.println("大舅的儿子厉害了,接着发红包");
}
}
类继承的加载顺序
先加载父类 再加载子类
祖先类的构造方法最先执行,祖先类最先被创建出来,其次是父类,最后是子类
在构造方法当中会隐性的调用super()超类,父类的无参构造方法
final 最终的 最后的
被final修饰的成员不可以被改写
1.final修饰的变量值不能发生修改 PI = 3.1415
修饰基本数据类型,其值不能发生改变;修改引用数据类型,例如数组,数组中的值可以发生修改,但是数组名不能指向新的空间
2.final修饰的方法不能被重写
3.final修饰的类不能被继承
多态
一个父类有多个子类
把子类的对象赋值给父类的过程叫做向上转型
把父类的对象赋值给子类的过程叫做向下转型
语法:
正常语法:
类名 对象名 = new 类名();
向上转型:
父类类型 对象名 = new 子类的类名();
向下转型:
子类类型 对象名 = (子类类型)父类的对象
instanceof
判断对象是否是一个类的实列(具体的对象)
package FeiGe;
public class Demo2 {
public static void main(String[] args) {
UncleOne uncleOne = new UncleOne();
ganHuo(uncleOne);
UncleTwo uncleTwo = new UncleTwo();
ganHuo(uncleTwo);
}instanceof
判断对象是否是一个类的实列(具体的对象)
package FeiGe;
public class Demo2 {
public static void main(String[] args) {
UncleOne uncleOne = new UncleOne();
ganHuo(uncleOne);
UncleTwo uncleTwo = new UncleTwo();
ganHuo(uncleTwo);
}
public static void ganHuo(Uncle uncle ){
if ( uncle instanceof UncleOne) {
System.out.println("出门外干活");
}else if (uncle instanceof UncleTwo) {
System.out.println("在室内干活");
}else {
System.out.println("传入的不是舅舅,老太太没办法指使");
}
}
}
public static void ganHuo(Uncle uncle ){
if ( uncle instanceof UncleOne) {
System.out.println("出门外干活");
}else if (uncle instanceof UncleTwo) {
System.out.println("在室内干活");
}else {
System.out.println("传入的不是舅舅,老太太没办法指使");
}
}
}