面向对象

super详解

继承方法

public class Name extends father{

code

}

 

子类调用:this .name
父类调用:super.name super.print()

 

  • 子类构造时会调用父类的构造器,并且super()必须时第一行

  • 写了有参构造会覆盖无参构造,需要手写无参构造

  • 子类的构造器 要么调用父类的无参(可以不显式调用),要么手动调用有参(不手写无参的话)

    • super和this的区别

    • super调用时需要继承关系

 

方法重写

重写是方法的重写,与属性无关

前提:需要有继承关系,子类重写父类的方法

要求:方法名必须相同

参数列表必须相同

修饰符:范围可以扩大:public》protected》default》

抛出的异常:范围可以缩小但不能扩大

 

 

  • 父类static方法

    • 子类调用与Typename有关

  • 父类非静态方法

    • 子类调用与右边有关

非静态方法才能重写

public方法才可以重写

 

 

多态

一个对象的实际类型是确定的

但是指向的引用类型不确定

pl..Student s1 = new Student

Person s2 = new Student


对象能执行哪些方法主要看对象左边的类型,和右边关系不大;

  • 多态是方法的多态

  • 强制转换只能低转高 Student->Person ClassCastException

  • 存在条件:继承关系,方法需要重写,父类引用指向子类对象

 

instanceof

用来判断两个类之间是否有关系

返回值为true或者false

 

强制转换

只存在于高转低 Person到Student,因为Student到Person不需要强制转换,因为Student里面的方法更多

 

static总结

  • 在类里面

    • 静态变量:属于类,可以用类名访问,被对象共享

    • 静态方法:可以用类直接调用。非静态可以调用静态方法静态方法只能调用静态方法


静态代码块

format:static{/*code*/}

  • 最早执行

  • 赋初始值


匿名代码块

format:{/*code*/}

第二执行

 

静态导入包

package static import java.lang.Math.random

 

抽象类

* 接口可以多继承
* 抽象类不能被实例化,必须被继承
* 抽象方法必须在抽象类中

format:

public abstract class Action{//抽象类

public abstract void eat();//抽象方法

}

抽象类存在的意义是更好的实现多态//提高开发效率//可扩展性比较高

 

接口

  • 只有规范,自己无法写方法(抽象类-方法)

  • 实现约束和实现分离

  • 声明类的关键词是class,声明结构的关键词是interface

  • 接口的本质是契约

  • 接口里面的方法默认都是public abstract

  • 实现类用impl结尾

  • 接口里面的属性是常量

实现类的写法:

public class xxxximpl implements xxxx1, xxxx2{}

 

 

内部类

类中类

先实例化外部类,再用外部类实例化的对象实例化内部类

  • 内部类可以获得外部类的私有属性

  •  

 

 

posted @ 2021-02-27 16:28  kenor  阅读(20)  评论(0)    收藏  举报