继承
概念
- 子类可以继承父类的特征和行为,是的子类的实例具有父类相同的变量或者类似的方法。
- 继承的优点:快速创建与父类有关系的一系列子类。
- 简单来说,子类有着父类留下的一些内容,也有自己独特的内容。
语法格式
public class 子类名 extends 父类名{
}
访问权限修饰符
- public
- private
- protected
- 缺省
要点
- 子类只继承父类的属性和方法,并不会继承父类的实例
- 实例化子类时在调用子类构造函数的同时,还会使用**super()**实例化父类
- 子类和父类是可以进行转型,其分为向上转型(子类->父类)和向下转型(父类->子类)两种。
- 经过转型后的类可以使用**getClass()**方法查看根类型。
public class Father{
public int money;
private int password;
protected String car;
int IQ;
public void drive(){
System.out.println("父亲开车!!");
}
public Father(int money, int password, String car, int IQ){
this.money = money;
this.password = password;
this.car = car;
this.IQ = IQ;
}
public int getPassword() {
return password;
}
public String getCar() {
return car;
}
public int getIQ() {
return IQ;
}
public void printInfo() {
System.out.println("Money:" + money);
System.out.println("password:" + password);
System.out.println("car:" + car);
System.out.println("IQ:" + IQ);
drive();
}
}
public class son_tim extends Father{
private int games_num;
public son_tim(int money, int password, String car, int IQ, int games_num){
super(money, password, car, IQ);
this.games_num = games_num;
}
public void printInfo() {
System.out.println("Money:" + money);
System.out.println("car:" + car);
System.out.println("IQ:" + IQ);
System.out.println("games_num:" + games_num);
super.drive();
}
public void drive(){
System.out.println("儿子Tim开车");
}
}
public class manage {
public static void main(String[] args){
Father dad = new Father(55, 999, "LAZ", 140);
son_tim son = new son_tim(dad.money, dad.getPassword(), dad.getCar(), dad.getIQ(), 5);
son.printInfo();
dad.drive();
Father dad1 = (Father) son;
dad1.drive();
drive(dad);
}
public static void drive(Father m){
m.drive();
}
}