面向对象三大特性

面向对象三大特性

封装(Capsulation)

封装就是把类里的属性私有,然后写get/set方法去调用这些private属性;起到一个保护数据的作用,

比如一个人的年龄,假如用户输入超过一个值,在set方法里提前判断一下,不让用户输入。

封装是数据的隐藏高内聚,低耦合

高内聚:类的内部数据自己完成,不允许外部干涉

低耦合,只暴露少量的方法给外部使用

属性私有 get/set

public class Person {
    //private属性 和public对立
    private String name;
    private int age;
	//get set
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

继承(inheritance)

继承就是子类指向父类,关系上有is...a的关系,比如Cat类和它的父类Animal类,那么就可以说Cat is a Animal

子类继承 父类的所有属性方法,子类时父类的拓展细分,有着父类所没有的,更多更细的一些属性方法

object类

在Java中所有的类都直接或间接继承Object类

super


代表父类引用

  • super()调用父类构造器必须在代码第一行,这是默认调用的

  • super只能在子类的方法或构造方法中

  • super和this不能同时调用

多态(polymorphism)

Java的继承是只允许单继承的,这样便于维护,但是单继承所带来的功能可能就会有局限,于是就引入一个重写的概念,也就是多态性的体现。

方法重写


需要有继承关系,子类重写了父类的方法,当一个父类引用指向子类对象的时候,这个对象执行的方法如果被子类重写,那么他会执行子类的方法而不是父类的方法。

  • 方法名必须相同
  • 参数列表必须相同
  • 修饰符,范围可以扩大但不能缩小 public > protected > defalut > private
  • 抛出的一场,范围可以缩小 但不能扩大

父类

public class Person {
    public void text(){
        System.out.println("==>textPerson");
    }
}

子类

public class Student extends Person{
    @Override
    public void text() {
        System.out.println("是我textA哒!");
    }
}

Application

public class Application {
    public static void main(String[] args) {
        Student a = new Student();
        //父类引用指向子类
        Person b = new Student();
        Person c = new Person();
        a.text();
        b.text();
        c.text();
    }
}

可以看到,在Application类那里,b是一个Person类,但指向的是子类Student,这个b执行的text()方法就不是Person了,而是执行Student类里重写过的text(),然后对象c就是Person的实例化,调用text是Person类里的text()方法,b和c都是Person类,调用同名方法却表现出不一样,就是多态性的体现了。

posted @ 2021-10-23 21:41  独高的浮云  阅读(51)  评论(0)    收藏  举报