面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口

类的封装

封装的目的是为了保证变量的安全性,使用者不必在意具体实现细节,而只是通过外部接口即可访问类的成员,如果不进行封装,类中的实例变量可以直接查看和修改,可能给整个代码带来不好的影响,因此在编写类时一般将成员变量私有化,外部类需要使用Getter和Setter方法来查看和设置变量

 java当中封装主要靠访问控制权限来进行实现的!

类的继承

在定义不同类的时候存在一些相同属性,为了方便使用可以将这些共同属性抽象成一个父类,在定义其他子类时可以继承自该父类,减少代码的重复定义,子类可以使用父类中非私有的成员。

比如说我们一开始使用的人类,那么实际上人类根据职业划分,所掌握的技能也会不同,比如画家会画画,歌手会唱,舞者会跳,Rapper会rap,运动员会篮球,我们可以将人类这个大类根据职业进一步地细分出来:

面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口_第1张图片

实际正这些划分出来的类,本质上还是人类,也就是说人类具有的属性,这些划分出来的类同样具有,但是,这些划分出来的类同时也会拥有他们自己独特的技能。在Java中,我们可以创建一个类的子类来实现上面的这种效果: 

面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口_第2张图片  

面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口_第3张图片 面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口_第4张图片

面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口_第5张图片

方法的重写:

重写:是将原本的东西给覆盖掉!

重载:方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数选择对应的方法。

重载两同三不同:

——同一个类,同一个方法名

——不同:参数列表不同。(类型,个数,顺序不同)

只有返回值不同不构成方法重载。

只有形参的名称不同,不构成方法重载。

与普通方法一样,构造函数也可以重载

重写方法:

面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口_第6张图片

 面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口_第7张图片

接口 

面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口_第8张图片

接口只有抽象类中的抽象方法!!

抽象方法不能够有方法体!!

public class Teacher extends Person implements Study{
    public Teacher(String name, int age, String sex) {
        super(name, age, sex);
    }
    public void exam(){
        System.out.println("我是老师,我不用考试,我直接给学生们出题!!");
    }
    public void study(){
        
    }
}

 implements用于实现这个接口,若接口中的方法没有在类中实现,那么就会报错!!

接口中的所有方法都要在类中实现的!!

JAVA中不能实现多继承,但是可以实现继承多个接口!!

实现多个接口只需要加个逗号就可以了!!

面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口_第9张图片

 java中接口可以实现方法的默认实现!!——default  默认实现!!

默认实现方法不用在类中重新声明!!——也可以对接口重点 默认方法进行重写!!

  @Override
    public void test() {
        Study.super.test();
    }

重写接口中默认方法的时候,调用接口中的默认方法,需要先写上接口的名字.super.方法名

接口不同于类,接口中不允许存在成员变量和成员方法,但是可以存在静态变量和静态方法,在接口中定义的变量只能是:

面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口_第10张图片

接口中的静态变量是不能够进行修改的

接口中的静态方法的权限是不能够进行修改的,只能是public

克隆方法 

面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口_第11张图片

因为克隆接口在object中是保护类型的!所以我们需要对克隆接口提升一下权限才可以使用!

public class Teacher extends Person implements Study,Cloneable{
//将克隆接口中的方法权限提升为Public
    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

接口也是能继承其他接口的!!

枚举类

面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口_第12张图片

面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口_第13张图片 

面向对象综述(Java篇):封装、继承、重载、重写、抽象、接口_第14张图片 

 

你可能感兴趣的:(Java,java,开发语言,1024程序员节)