继承
-
继承的格式:public class子类名 extends 父类名{}(public class Zi extends Fu{}),Fu是父类,也被称为基类,超类;Zi是子类,也被称为派生类。子类在继承中可以有父类的内容,还可以有自己特有的内容。
-
继承中变量访问特点:在子类方法中访问一个变量(1.在子类局部范围找 2.在子类成员范围找 3.父类成员范围找 4.如果都没有就报错,不考虑父类的父类)
-
super用法和this关键字用法(this:代表本类对象引用 super:代表父类存储空间的标识,父类对象引用)
关键字 访问成员变量 访问构造方法 访问成员方法 this this.成员变量,访问本来成员变量 this(……)访问本类构造方法 this.成员方法(……)访问本类成员方法 super super.成员变量,访问父类成员变量 super(……),访问父类构造方法 super.成员方法(……)访问父类成员方法 public class Zi extends Fu { //身高 public int height = 175; //年龄 public int age = 20; public void show(){ int age = 30; System.out.println(age); System.out.println(height); //如果要访问本来成员变量age System.out.println(this.age); //如果要访问父类的成员变量age System.out.println(super.age); } }
//子类中所有的构造方法默认都会访问父类中无参的构造方法,子类会继承父类数据,可能还会使用父类数据,所以子类初始化之前,一定要先完成父类数据初始化(每个子类构造方法的第一条语句默认是super()),如果父类中没有无参构造方法,只有带参构造方法,就需要在父类中自己提供一个无参构造方法,或者使用super关键字取显示的调用父类的带参构造方法。
-
方法重写
如果子类中出现了和父类中一摸一样的方法声明,子类需要父类功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,既有父类中功能,又添加了子类特有内容。(父类中私有private内容不能被子类重写),子类访问权限不能更低(public > 默认 > 私有private)
-
java中类只支持单继承,不支持多继承;Java中类支持多层继承。
public class Granddad{ public void drink(){ System.out.println("爷爷喝酒"); } } public class Father extends Granddad{ public void smoke(){ System.out.println("爸爸抽烟"); } } public class Son extends Father{}
-
案例猫狗继承动物类
//动物类(父类) public class Animal { private String name; private int age; public Animal() { } public Animal(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
//猫,子类 public class Cat extends Animal { public Cat() { } public Cat(String name, int age) { super(name, age); } public void catMouse(){ System.out.println("猫抓老鼠"); } } //狗,子类 public class Dog extends Animal{ public Dog(){} public Dog(String name, int age){ super(name,age); } public void lookDoor(){ System.out.println("狗看门"); } }
//测试方法 public class Test { public static void main(String[] args) { Cat c1 = new Cat(); c1.setName("加菲猫"); c1.setAge(3); System.out.println(c1.getName()+","+c1.getAge()); c1.catMouse(); Cat c2 = new Cat("快乐星猫",5); System.out.println(c2.getName()+","+c2.getAge()); c2.catMouse(); Dog d1 = new Dog(); d1.setName("旺财"); d1.setAge(4); System.out.println(d1.getName()+","+d1.getAge()); d1.lookDoor(); Dog d2 = new Dog("黑皇",6); System.out.println(d2.getName()+","+d2.getAge()); d2.lookDoor(); } }
-