• JAVA 之 继承


    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() + " Dog [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() + " Penguin [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();

    }
    }

     

     

    二、使用抽象类抽象方法完成

     

    汽车有车牌号、品牌 属性

    轿车有型号属性

    客车有座位数属性

  • 相关阅读:
    FFmpeg在JAVA中的使用以及Process.waitFor()引发的阻塞问题
    分析自己遇到的Excel导出报NullpointException问题
    C# 获取文件路径
    List的方法和属性 方法或属性 作用
    asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
    .NET 垃圾回收与内存泄漏
    .NET多线程总结和实例介绍
    C#中释放数据库连接资源
    PHP
    sqlconnection dispose()与close()的区别
  • 原文地址:https://www.cnblogs.com/hellokitty1/p/4409474.html
Copyright © 2020-2023  润新知