继承 super关键字 导包 修饰符 多态

这篇博客详细介绍了Java中的继承概念,包括子类与父类的关系、继承的优缺点、构造方法和成员方法的访问特点、方法重写及其应用。此外,还讨论了多态的概念,强调了多态在提高程序扩展性方面的优势以及其在成员访问上的特点。示例代码展示了如何创建和使用子类对象,以及如何通过多态调用方法。
摘要由CSDN通过智能技术生成

继承:是面向对象三大特征之一,可以是的子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。

继承格式

public class 子类名 extends 父类名{}

父类,也被称为基类和超类

子类,也被称为派生类

继承中子类的特点:

子类可以有父亲的内容;

子类还可以有自己特有的内容。

集成的优点和缺点:

优点:提高了代码的复用性(多个类相同的成员可以放到同一个类中)

        提高了代码的维护性(如果方法的代码需要修改,修改一处即可)

缺点:继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时子类实现也不得不跟着变化,削弱了子类的独立性

什么时候使用继承?

我们有两个类AB当A是B的一种或者B是A的一种,这个时候可以考虑使用继承体现

继承中变量的访问特点:1.子类局部范围找2.子类成员范围找3.父类成员范围找4.如果都没有就报错(不考虑父亲的父亲)

(public static代表是静态方法,可以不通过创建所属对象进行访问;直接public代表是非静态方法,需要先new一个对象进行访问。)

super关键字:代表父类存储空间的标识(可用来访问父类的成员变量、构造方法、成员方法

super.成员变量、super(...)、super.成员方法(....))

this关键字:可用来访问本类的成员变量、构造方法、成员方法this.成员变量、this(...)、this.成员方法(....)

继承中构造方法的访问特点:子类中所有的构造方法默认都会访问父类中无参的构造方法

原因:因为子类会继承父类中的数据,可能还会使用父类的数据,所以子类初始化之前,一定要先完成父类数据的初始化        每一个子类构造方法的第一条语句默认都是super()

继承中成员方法的访问特点:1.子类成员范围找 2.父类成员范围找3.找不到就报错(不考虑父亲的父亲)        

方法重写:子类中出现了和父亲中一模一样的方法声明

方法重写的应用:当子类需要父类的功能,而功能主题子类有自己特有内容是,可以重写父类中的方法,这样,既沿袭了父亲的功能,又定义了子类特有的内容

@override:是一个注解

检查重写方法声的方法声明的正确性

方法重写的注意事项:1.私有方法不能被重写(父类私有成员子类是不能继承的)

                                    2.子类方法访问权限不能更低(public > 默认 > 私有)

java中继承的注意事项:1.java中类只支持单继承,不支持多继承

                                        2.java中类支持多层继承

导包:食用不同包下的类时,使用的时候要写清楚类的全路径,写起来太麻烦,为了简化带包的操作,java提供导包功能

格式:import包名;

权限修饰符:同一个类中 private、默认(void)、protected、public都可访问到

                        同一个包中子类无关类:默认、protected、public可访问到

                        不同包的子类:protected、public可访问到

                        不同包的无关类:public可访问到

状态修饰符:final(最终态)是最终的意思,可以修饰成员方法,成员变量,类

                被final修饰的方法是最终方法,不能被重写

                被final修饰的成员变量变为常量,值不能再改变

                类被final修饰不能作为父类被子类继承

                局部变量被final修饰,修饰基本类型,基本类型的数据值不能发生改变;修饰引用类型,引用类型的地址值不能发生改变,但是地址里面的内容可以发生改变

                    static关键字是静态的意思,可以修饰成员方法、成员变量。

static修饰特点:1.被所有对象共享(这也是我们判断是否使用静态关键字的条件)

                        2.可以通过类名调用,也可以通过对象名调用(推荐使用类名调用)

                        main是静态的

非静态的成员方法(可以访问静态的成员变量、非静态的成员变量、静态的成员方法、非静态的成员方法)

静态的成员方法(可以访问静态的成员方法、静态的成员变量)
总结:静态成员方法只能访问静态成员

多态:同一个对象,在不同时刻表现出来的不同形态

举例: 猫 cat = new 猫;

                动物 animal = new 猫;

这里猫在不同时刻表现出来的不同形态,这就是多态

多态的前提和体现

有/继承/实现关系

有方法重写

有父类引用指向子类

多态中成员访问特点

成员变量:编译看左边,执行看左边

成员方法:编译看左边,执行看右边

多态的好处:提高了程序的扩展性

                具体体现:定义方法时,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作

多态的弊端:不能使用子类的特有功能

多态中的转型

向上转型:(Animal a = new Cat;)从子到父;父类引用指向子类对象

向下转型:(Cat c = (Cat)a;)从父到子;父类引用转换为子类对象(方法重写快捷ctrl+o)

public class demo {
    public static void main(String[] args) {
        //创建猫类
        Animal a = new cat();
        a.setName("橘猫");
        a.setAge("5");
        System.out.println(a.getAge() + "," + a.getName());
        a.eat();
        a = new cat("5", "加菲");
        System.out.println(a.getAge() + "," + a.getName());
        a.eat();
        //创建狗类
        Animal b = new Dog();
        b.setName("柯基");
        b.setAge("2");
        System.out.println(b.getAge() + "," + b.getName());
        b.eat();

    }
}
public class Animal {
    //成员变量
    private String age;
    private String name;

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    //构造方法


    public Animal() {
    }

    public Animal(String age, String name) {
        this.age = age;
        this.name = name;
    }

    public void eat(){
        System.out.println("动物吃食物");
    }
}

public class cat extends Animal {
    public cat() {
    }

    public cat(String age, String name) {
        super(age, name);
    }

    @Override
    public void eat() {
        //super.eat();
        System.out.println("猫吃鱼");
    }
}
public class Dog  extends Animal{
    public Dog() {
    }

    public Dog(String age, String name) {
        super(age, name);
    }

    @Override
    public void eat() {
       // super.eat();
        System.out.println("狗吃肉");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值