每日学到 21 - 继承

目录

1.static方法

1)静态方法:可直接通过类名访问

2)实例方法:通过实例访问

2.继承

1)继承的作用

2)如何使用继承

3)子类继承父类的什么?

4)子类可以继承父类的所有资源吗?

3.super关键字

1)子类访问父类

2)super关键字来访问父类的成员,super代表父类对象

3)继承条件下构造方法的调用规则

 4.例题


1.static方法

1)静态方法:可直接通过类名访问

       静态方法中不能使用this和super
       不能直接访问所属类的实例变量和实例方法
       可直接访问类的静态变量和静态方法

2)实例方法:通过实例访问

       可直接访问所属类的静态变量、静态方法、实例变量和实例方法
       静态方法必须被实现

2.继承


            
                父类                                                                                    子类                            子类

1)继承的作用

       减少代码量
       方便修改代码

2)如何使用继承

①编写父类
        [访问修饰符] class Pet {
        //公共的属性和方法
        }

②编写子类,继承父类
       [访问修饰符] class Dog extends Pet {
       //子类特有的属性和方法
       }

继承是Java中实现代码重用的重要手段之一。Java中只支持单根继承,即一个类只能有一个直接父类

3)子类继承父类的什么?

继承public和protected修饰的属性和方法,不管子类和父类是否在同一个包里

继承默认权限修饰符修饰的属性和方法,但子类和父类必须在同一个包里

4)子类可以继承父类的所有资源吗?

不能被继承的父类成员:

       private成员

       子类与父类不在同包,使用默认访问权限的成员

       构造方法

3.super关键字

1)子类访问父类

①访问父类构造方法
                super();    
                super(name);

②访问父类属性
                super.name;

③访问父类方法
                super.print();

2)super关键字来访问父类的成员,super代表父类对象

            super只能出现在子类的方法和构造方法中
            super调用构造方法时,只能是第一句
            super不能访问父类的private成员

3)继承条件下构造方法的调用规则

子类构造方法没有通过super显式调用父类的有参构造方法,也没通过this显式调用自身其他构造方法。
       系统默认调用父类的无参构造方法。

子类构造方法通过super显式调用父类的有参构造方法。
       执行父类相应构造方法,而不执行父类无参构造方法。

子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则。

 4.例题

编写一个Java应用程序,设计一个汽车类Vehicle,
// 包含的属性有车轮个数wheels和车重weight。
// 小车类Car是Vehicle的子类,其中包含的属性有载人数loader。
// 卡车类Truck是Car类的子类,其中包含的属性有载重量payload。
// 每个类都有构造方法进行属性初识化和输出相关数据的方法;
// 使用Test类中的main方法定义各类初始化数据后台打印相关数据
package com.homework.eight.demo02;

public class Test {
    public static void main(String[] args) {
        
        Vehicle vehicle1 = new Vehicle(4,1.5);
        Car car1 = new Car(4,1.6,5);
        Truck truck1 = new Truck(4,1.8,4,3.5);
        vehicle1.printInfo();
        car1.printInfo();
        truck1.printInfo();
    }
}

package com.homework.eight.demo02;

public class Vehicle {
    private int wheels;
    private double weight;

    public Vehicle() {
    }

    public Vehicle(int wheels, double weight) {
        this.wheels = wheels;
        this.weight = weight;
    }

    /**
     * 获取
     * @return wheels
     */
    public int getWheels() {
        return wheels;
    }

    /**
     * 设置
     * @param wheels
     */
    public void setWheels(int wheels) {
        this.wheels = wheels;
    }

    /**
     * 获取
     * @return weight
     */
    public double getWeight() {
        return weight;
    }

    /**
     * 设置
     * @param weight
     */
    public void setWeight(double weight) {
        this.weight = weight;
    }

    public void printInfo(){
        System.out.println("车轮:"+this.getWheels()+"车重:"+this.getWeight());
    }
}
package com.homework.eight.demo02;

public class Car extends Vehicle{
    private int loader;

    public Car() {
        super();
    }

    public Car(int wheels, double weight, int loader) {
        super(wheels, weight);
        this.loader = loader;
    }

    /**
     * 获取
     * @return loader
     */
    public int getLoader() {
        return loader;
    }

    /**
     * 设置
     * @param loader
     */
    public void setLoader(int loader) {
        this.loader = loader;
    }

    public void printInfo(){
        System.out.println("车轮:"+this.getWheels()+"车重:"+this.getWeight()+"载人数:"+this.getLoader());
    }

}
package com.homework.eight.demo02;

public class Truck extends Car{
    private double payload;

    public Truck() {
        super();
    }

    public Truck(int wheels, double weight, int loader, double payload) {
        super(wheels, weight, loader);
        this.payload = payload;
    }

    /**
     * 获取
     * @return payload
     */
    public double getPayload() {
        return payload;
    }

    /**
     * 设置
     * @param payload
     */
    public void setPayload(double payload) {
        this.payload = payload;
    }

    public void printInfo(){
        System.out.println("车轮:"+this.getWheels()+"车重:"+this.getWeight()+"载人数:"+this.getLoader()+"载重量:"+this.getPayload());
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值