继承的基本使用
return age;
}
public void setAge(int age) {
this.age = age;
}
public void say(){
System.out.println("我是一个动物,我叫:"+this.getName()+",我的年龄是:"+this.getAge());
}
}
这里定义一个 Animal 类和两个私有属性 name 和 age 然后给出共有的 set get 接口 以及一个共有的 say()方法;
public class Dog extends Animal {
/定义 Dog 类继承 Aniaml/
public static void main(String[] args) {
Dog dog = new Dog();
dog.setName("旺财");
dog.setAge(3);
dog.say();
}
}
我们再定义一个 Dog 类 通过 extends 关键字 继承 Animal 类;
我们实际上把父类 Animal 的共有方法 get set 以及 say()方法都继承了;
//output:
我是一个动物,我叫:旺财,我的年龄是:3
方法的重写就是我们可以在子类中根据实际情况把父类的方法重写;要注意的是修改方法的修饰权限只能由大范围到小范围改变,比如父类中的权限为 protected,继承后子类的方法权限只能改为 public。
上代码:
/定义 Cat 类继承 Animal/
public class Cat extends Animal {
/重写父类 say 方法/
public void say(){
System.out.println("我是一只猫,我叫:"+this.getName()+",我的年龄是:"+this.getAge());
}
public static void main(String[] args) {
Cat cat = new Cat();
cat.getName();
cat.getAge();
cat.say();
}
}
上面我们重写父类的 say 方法,改成是猫,以及用 getName 和 getAge,因为当前对象里继承不到父类的私有字段;
//output:
我是一只猫,我叫:小白,我的年龄是:1
我们发现,虽然继承了父类 say 方法,但最后输出的却是重写后方法内的操作。这就是方法重写的精髓所在。
对象实例化 先实例化调用父类构造方法,再调用子类实例化构造方法;
super 关键主要是调用父类方法或者属性;
我们修改下上面的例子:
public class Animal {
private String name;
private int age;
/定义无参构造方法/
public Animal(){
System.out.println("无参父类构造方法");
}
/*定义有参构造方法
name
age
*/
public Animal(String name,int age) {
System.out.println("有参父类构造方法");
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 void say(){
System.out.println("我是一个动物,我叫:"+this.getName()+",我的年龄是:"+this.getAge());
}
}
/定义 Cat 类继承 Animal/
public class Cat extends Animal {
private String address;
public String getAddress() {
return address;
}
p
ublic void setAddress(String address) {
this.address = address;
}
评论