继承
继承是面向对象程序设计不可缺少的设计思想,是实现代码可重用的根基,是提高代码可扩展性的主要途径。
继承是从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并能扩展新的能力。
–在JAVA中使用extends关键字来表示继承关系。
–JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个直接父类。
–继承之后子类可以调用父类的所有非私有属性和非私有方法
/*
* 用 extends 表示继承
* java 中只能直接继承一个父类
* 继承后子类能直接调用父类的非私有的内容(要调用私有内容要使用父类中特定的方法)
* */
public class Animal extends Object {
String name;
private int age;
public void eat(){
System.out.println("吃:::");
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Animal() {
System.out.println("animal的无参构造方法");
}
}
public class Dog extends Animal{
String kind;
private String behavior;
public void wang(){
System.out.println("汪汪汪");
}
public String getBehavior() {
return behavior;
}
public void setBehavior(String behavior) {
this.behavior = behavior;
}
public Dog(){
System.out.println("Dog的无参构造方法");
}
public Dog(String kind) {
System.out.println("Dog的有参数构造方法");
}
}
public class Test {
public static void main(String[] args) {
Dog d=new Dog();
//继承父类的类容
d.name="富贵";
System.out.println(d.name);
d.eat();
d.setAge(18);
System.out.println(d.getAge());
//自己的类容
d.kind="土狗";
System.out.println(d.kind);
d.wang();
d.setBehavior("摇尾巴");
System.out.println(d.getBehavior());
}
}
注:在创建子类对象时,会先调用父类构造方法,创建父类对象
super关键字
super关键字代表父类的引用,在程序中主要的用途
在子类构造方法中要调用父类的构造方法,需要注意:super语句只能出现在子类构造方法体的第一行。
用“super.成员变量名”来引用父类成员变量
用“super.方法名(参数列表)”的方式访问父类的方法。
与this的区别,this通常指代当前对象,super通常指代父类。
public class TuGou extends Dog {
public TuGou(){
// 使用super关键字调用父类任意一个构造方法,若要用super 则要写在第一行
super("哮天犬");
System.out.println("土狗的无参构造方法");
}
}
方法的重写(OverRide)
在子类中可以根据需要对从基类中继承来的方法进行重写。
方法重写规则:
–方法名相同、参数列表相同;
–返回值类型相同;
–访问权限等于或大于父类权限;
注意:构造方法不能重写
public class TuGou extends Dog {
/* 方法的重写
由于父类的功能满足不了子类的需求,或者子类与父类功能不一样时
重写时,要与父类保持一致(类型,返回值,参数),访问权限修饰符子类要大于等于父类
可以用super 继续调用父类的方法和属性,与调用构造方法不同可以不放在第一行
* */
@Override //注释(标签),表明方法是重写来的
public void wang() {
System.out.println("土狗叫");
super.wang();
}
}