1,继承定义以及基本使用
定义:子类能够继承父类的属性和方法;
注意点:Java中只支持单继承; 私有方法不能继承;
package com.xuyigang1234.chp02.extend; /** * 定义一个Animal类 * */ public class Animal { private String name; private int 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 sys() { System.out.println("我是一个动物,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"岁。"); } }
package com.xuyigang1234.chp02.extend; /** * 定义Dog类,继承自Animal类 * * 继承的关键字为 extends * */ public class Dog extends Animal { public static void main(String[] args) { Dog dog=new Dog(); dog.setName("小白"); dog.setAge(1); dog.sys(); } }
实际上把父类Animal的共有方法get set以及say()方法都继承了;
输出:
我是一个动物,我的名字是:小白,我的只有1岁。
2、方法重写
所谓方法的重写 我们可以在子类中根据实际业务把父类的方法重写;
package com.xuyigang1234.chp02.extend; /** * 定义Dog类,继承自Animal类 * * 继承的关键字为 extends * */ public class Dog extends Animal { /** * 方法重写 * */ public void sys() { System.out.println("我是一只小狗,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"岁。"); } public static void main(String[] args) { Dog dog=new Dog(); dog.setName("小白"); dog.setAge(1); dog.sys(); } }
输出:
我是一只小狗,我的名字是:小白,我的只有1岁。
3,对象实例过程以及super关键字
对象实例化 先实例化调用父类构造方法,再调用子类实例化构造方法;
super关键主要是调用父类方法或者属性;
package com.xuyigang1234.chp02.extend; /** * 定义一个Animal类 * */ public class Animal { private String name; private int age; public Animal() { System.out.println("无参父类构造方法"); } 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 sys() { System.out.println("我是一个动物,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"岁。"); } }
package com.xuyigang1234.chp02.extend; /** * 定义Dog类,继承自Animal类 * * 继承的关键字为 extends * */ public class Dog extends Animal { private String maofa; public String getMaofa() { return maofa; } public void setMaofa(String maofa) { this.maofa = maofa; } public Dog() { System.out.println("无参子类构造方法"); } public Dog(String name,int age,String maofa) { super(name,age); //调用父类的构造方法 this.maofa=maofa; System.out.println("有参子类构造方法"); } /** * 方法重写 * */ public void sys() { System.out.println("我是一只小狗,我的名字是:"+this.getName()+",我的只有"+this.getAge()+"岁,有"+this.getMaofa()+"的毛发。"); } public static void main(String[] args) { Dog dog=new Dog("小白",1,"白色"); // dog.setName("小白"); // dog.setAge(1); dog.sys(); } }
输出:
有参父类构造方法
有参子类构造方法
我是一只小狗,我的名字是:小白,我的只有1岁,有白色的毛发。