extends 继承关键字
extends 继承关键字
/** */文档注释
javadoc 生成文档
工具类可以使用构造方法私有化,private一个空的构造方法,防止使用new方法创建对象。可配合单例模式使用。
静态方法不能使用类中的非静态变量,若想访问,可考虑传递参数的形式,将对象传递过来,访问该对象中的变量。
静态变量:直接隶属于类,用对象调用时,调用的都是同一个
java中没有属性的概念,需要自己写get与set方法
java中成员变量默认是friendly的,即在本类以及相同包中的类都能访问,不同包不能访问。
面向对象:控制对象,记传史
面向过程:根据顺序思路,编年史
abcdegghijklmnopqrst
匿名内部类:
new 接口名/类名(){重写方法}
匿名内部类是通 过
new 类名/接口名 (){ 将类/接口中的方法重写完整}
来实现的
接口只能被实现(implements),无法被继承。
抽象类也可以是新接口,可以选择性实现接口内的方法。
具体类实现接口要实现接口内的所有方法。
抽象方法:用abstract修饰,并且没有方法体的方法就是抽象方法
抽象类和抽象方法的关系:抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类
抽象类不能构造对象,因为抽象方法不完整,但是可以被继承,如果抽象类的子类是一个完整的类,那么它必须重写父类(抽象类)里面的所有抽象方法。
多态:
继承关系:子类是父类
通过父类来声明对象,然后构造一个新的函数
例如:Person p = null;
p = new Teacher();
p = new Student();
多态情况下可以直接调用父类里面的方法,但是不能直接调用子类的方法(因为子类方法存在于子类当中,而声明的时候是用父类声明的,父类当中没有该方法,所以无法直接调用)。
如何调用子类方法?
利用强制转换来调用:
((Teacher)p).teach();
将p强制转换为Teacher,然后来调用Teacher(子类)的方法
这样的声明表面上是一个Person类,但是本质上是一个Teacher类,所以可以用强制类型转换来调用Teacher里面的方法,但是不能用强制转换来调用其他类里面的方法。
内部类可以直接访问所在外部类的成员变量和方法(私有变量和方法也可以访问,且可以修改变量),但是外部类无法直接访问内部类的变量和方法,但是可以通过对象访问
重载和重写的区别
1.重载是在同一个类中重载的,重载的语句为:
参数不一致,方法名一致,返回值 不要求一致不一致
2.重写是在子类对父类的方法的重写,子类重写父类的方法要求参数,方法名,返回值都要一致,方法体可自己实现
final关键字:
可用于修饰类,方法,变量
final类:不能被继承
final方法:不能被重写
final变量:表示自定义常量,只能赋值一次。不允许修改
继承中的方法重写,;
子类重写父类的方法,方法名,参数,和返回值必须一致,方法体可实现新的方法体。
重写时应注意:
1.重写的时候,不能将访问权限降低,例如父类的方法访问权限是public,那么重写的时候不能改改为private。
各类参数的访问:
1.方法传进来的参数,直接用变量名访问
2.当前类的成员访问,用this.访问
3.父类成员的访问,用super.访问
super 不仅可以用来调用父类的构造方法,
还可以用来访问父类的成员变量。
类的继承:
子类继承父类后,可以调用父类的方法,并且可以创建自己的方法,所以说,子类的功能会比父类更加强大。
一般多个类拥有相同的属性和方法时,可以创建一个新的类来存放这些相同的属性和方法,再由子类继承,子类同样不能访问父类的私有属性和方法
静态代码块:
static {
代码块
}
只会类被加载的时候加载一次,可用于变量初始化