JavaSE(二十一)——面向对象的三个基本特征

1. 封装

定义: 封装是将客观事物封装成抽象类, 并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

举例:

public class Person{
    private String name;
    private int age;
    private String sex;

    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    private int getAge(){
        return age;
    }
    private void setAge(int age){
        this.age = age;
    }
    public void setSex(String sex){
        this.sex = sex;
    }
}

如果没有set()和get()方法,那么Person类应该是这样的:

public class Person {  
    public String name ;  
    public int age ;   
    private String sex;

}

需要这样使用它:

Person person = new Person();  
person.age = 18;  
person.name = "小胖";  
person.sex = "男";

封装好处:
(1)如果需要修改Person,比如将sex修改为int类型,几十或者上百个这样的地方需要修改,工作量极大,如果封装了,只需要修改setAge()方法就好了。
(2)针对某些成员变量,不想让其他类知道其值的大小,就可以不去做get()操作,比如Person类中的sex,不想让其他人知道性别,就不做getSex()。
(3)private修饰的成员变量以及成员方法,无法在类外调用,起到了隐藏的作用。

2. 继承

定义: 继承是从己有的类中派生出的新的类,新的类能够吸收己有类的数据属性和行为,并能扩展新
的属性和行为。关键字(extends)让类与类之间产生继承关系。

举例:

//Dog是子类,Animal是父类
class Dog extends Animal{
}

注意: Java中类不支持多继承,单继承可以使继承关系变得简单,一个类只能有一个父类,一
个类可以继承多个接口 接口支持多继承。

3. 多态

定义: 多态指不同类对象对同一消息做出的响应。

重写和重载:
(1)方法的重写Overriding和重载Overloading都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。

(2)重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。

(3)重载发生在同一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重载对返回类型没有特殊的要求,对访问权限也没有要求。

你可能感兴趣的:(JavaSE)