2021.03.31面向对象之三大特征及访问修饰符

24 篇文章 1 订阅

面向对象的三大特征

继承、封装、多态。

继承

1.父类也称作超类、基类;子类:派生类。
2.JAVA中只有单继承,没有像C++那样的多继承,多继承会引起混乱,使得继承链过于复杂,系统难以维护。
3.子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如父类私有的属性和方法)。
4.如果定义一个类时,没有使用extends,则他的父类是:java.lang.Object。

方法的重写

重写
父类中的方法没有办法满足子类的要求,这个时候我们就需要进行方法的重写。

# 重写的要求
1.方法名必须相同
2.参数列表必须相同,如果不同就不是重写
3.返回值类型小于等于
4.访问修饰符子类重写的方法大于等于父类中的方法
5.静态的方法是不可以进行重写的


//父类
public class Fu {
    String name;

    public Fu() {
        System.out.println("父类中无参构造");
    }

    public Fu(String name) {
        System.out.println("父类中有参构造");
    }

    {
        System.out.println("父类中代码块");
    }
    static{
        System.out.println("父类中静态代码块");
    }
}

//子类
public class Zi extends Fu{

    public Zi() {
        //super(); //会自动调用父类的无参构造
        System.out.println("子类无参构造");

    }

    public Zi(int age) {
        System.out.println("子类中的有参构造");
    }
    {
        System.out.println("子类中代码块");
    }
    static {
        System.out.println("子类中静态代码块");
    }
}

//测试类
public class TestA {
    public static void main(String[] args) {
        Zi zi = new Zi();
    }
 }

【1】构造方法是不可以被继承的
【2】在继承关系中,创建Zi()对象是不会自动创建Fu()对象的
【3】每一个构造函数第一行都会有一个默认的super();来进行父类无参构造的调用,但是注意这一步,不是创建父类对象
【4】this和super关键字可以一块使用;但是super();和this();不可以一块使用,this()和super()都是代码的第一行
【5】父类静态代码块—>子类的静态代码块—>父类代码块—>父类无参构造—>子类的代码块—>子类的无参构造

多态

多态 :向上转型,父类引用指向子类对像
编译的时候按照左侧编译,右侧执行
这种多态的表示的形式 ;在调用方法的时候只可以调用子类和父类都有的方法
子类的特有方法是没有办法使用多态方式进行调用


多态的好处
另外即使增加了新的子类,方法也无需改变,提高了扩展性,符合开闭原则


多态发生的条件
1.必须有继承关系
2.重写父类的方法
3.父类引用指向子类对象

方法重载和重写的区别

总体的区别:最主要的区别,是解决的问题不同,即作用不同。

英文位置不同作用不同
重载overload同一个类中在一个类里面为一种行为提供多种实现方式并提高可读性
重写override子类和父类间父类方法无法满足子类的要求,子类通过方法重写满足要求

细节的区别:一个方法的声明自左向右包括权限修饰符、方法返回值、方法名、参数列表、抛出的异常类型等。下面从这几方面说明区别
修饰符返回值方法名参数抛出异常
重载无关无关相同不同无关
重写大于等于等于相同相同小于等于

权限修饰符

访问权限修饰符
修饰符同一个类同一个包中(可继承)子类所有包的所有类
private*
默认/defalut**
protected***
public****
1.private 表示私有,只有自己类能访问
2.default(friendly)表示没有修饰符修饰,只有同一个包的类能访问
3.protected表示可以被同一个包的类以及其他包中的子类访问
4.public表示可以被该项目的所有包中的所有类访问
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~Amory

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值