1:继承的定义:
Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
2:关键字: extends :继承
3:格式形式: public class A extends B {} A:代表子类 B:代表父类
4:子类可继承父类的public,protected成员。
5:java中的继承是单继承的,具有单根性,传递性。所以一个类就只有一个父类。
6:方法重写: (子类对父类方法的重写)
其规则:
1:子类的返回值类型,方法名,参数列表必须和父类的相同;
2:访问修饰符必须大于父类修饰符的范围;
3:子类重写的异常不能抛出的比父类多。
与之区别的 方法重载
规则:在一个类中有两个及以上的方法名相同,参数列表不同的。
7:super 关键字:父类 超类
8:final 关键字
1:final类:没有子类,不能被继承
2:final方法:不能被重写
3:final常量:常量值不能被修改
9:继承的优点:
1: 代码的重用性
2:父类的方法和属性可以用于子类
3:设计应用程序变得简单
4:子类可继承父类的属性和方法
10:实例化过程
:继承的练习:
1. 创建宠物类,宠物有名称,健康值,与主人亲密值的属性
2. 创建狗类,狗有名称,健康值,与主人亲密值,品种的属性
3. 创建企鹅类,企鹅有名称,健康值,与主人亲密值,性别的属性
4. 创建狗对象,打印出狗的基本信息
5. 创建企鹅对象,打印企鹅的基本信息
6. 添加宠物叫的方法,测试打印狗和企鹅的叫的方法,如狗是“汪汪汪”的叫,企鹅是“咕咕咕”的叫
分析:
宠物类 狗类 企鹅类 狗类和企鹅类继承了宠物类的名称,健康值,与主人亲密值的属性
代码:
package com.lovo.exercise;
/**
* 宠物类 * * @author Administrator * */public abstract class Pet {private String name;
private int health; private int love;public Pet() {
super(); System.out.println("Pet构造器中"); }public Pet(String name, int health, int love) {
this.name = name; this.health = health; this.love = love; }public String getName() {
return name; }public void setName(String name) {
this.name = name; }public int getHealth() {
return health; }public void setHealth(int health) {
this.health = health; }public int getLove() {
return love; }public void setLove(int love) {
this.love = love; }public String toString() {
return "Pet [name=" + name + ", health=" + health + ", love=" + love+ "]"; } public abstract void shout();}
//狗类
package com.lovo.exercise;
/**
* 狗 * * @author Administrator * */public class Dog extends Pet {private String strain; // 品种
public Dog() {
System.out.println("Dog构造器中"); }public Dog(String name, int health, int love, String strain) {
super(name, health, love); this.strain = strain; }public String getStrain() {
return strain; }public void setStrain(String strain) {
this.strain = strain; }public String toString() {
return super.toString() + "\nDog [strain=" + strain + "]"; }public void shout() {
System.out.println("汪汪汪"); }}//企鹅类
package com.lovo.exercise;
/**
* 企鹅 * * @author Administrator * */public class Penguin extends Pet { private String sex;public Penguin() {
}public Penguin(String name, int health, int love, String sex) {
super(name, health, love); this.sex = sex; }public String getSex() {
return sex; }public void setSex(String sex) {
this.sex = sex; }@Override
public String toString() { return super.toString() + "\nPenguin [sex=" + sex + "]"; } public void shout(){ System.out.println("咕咕咕"); }}
//测试
package com.lovo.exercise;
public class Test {
public static void main(String[] args) {
Dog dog = new Dog("小白", 88, 99, "雪拉瑞"); System.out.println(dog); dog.shout(); System.out.println("**********************"); Penguin pen = new Penguin("Q妹妹", 88, 99, "女"); System.out.println(pen); pen.shout();}
}
二、使用抽象类抽象方法完成
汽车有车牌号、品牌 属性
轿车有型号属性
客车有座位数属性