6..封装
(1)封装:形成类的过程,指属性和方法的定义在类中。
(2)访问权限 类 包 子类 其他包
Public √ √ √ √
Protect √ √ √ ×
Default √ √ × ×
Private √ × × ×
(3)实现封装由以下两个步骤,一将不能暴露的成员隐藏起来,二用公共方法来暴露对该隐藏成员的访问,可以给函数上加修饰符public,将该方法定义为公共的。
(4)默认:private<default<protected<public;
(1)在java中被继承的类称为父类、基类或者超类,与之对应的类称为子类或者派生类。
(2)继承是通过extends实现的。
Java不支持多重继承,一个子类只能有一个父亲,但是可以有多层继承。object是所用类的直接父类或间接父类;如果一个成员要被子类继承之后使用,这个成员不能是private类型,因为私有的成员不能在类的外部使用,当然也不能被子类使用。
(3)优点:能够复用源代码,可以利用已有类扩展
(4)缺点:实现了类与类之间的耦合性。
(5)
Super super(父)成员变量;
super(父)成员方法();
super(父)参数列表;
(6)在构造子函数时先调用父类的构造方法再调用子类,先输出父亲再输出子类。
子类没有调用super,会用父类中默认
子类返还用super调用父类且没有定义参数,这包销。
变量的隐藏
(7)屏蔽/覆盖
方法重写
(9)super表示当前类的直接父类。访问被子类隐藏的变量或被重写的方法,则可以通过关键字super实现相应的访问。
注意 super(title);必须写在子类构造函数的第一句,传入的参数必须和父类构造函数中的参数列表类型匹配。
Instance of 运算符 用于判断一个对象是否是某一个父类的实例对象,或者是否是某一个类的子类的实例对象。
对象名 instance of 类名;
(10)
调用父类的构造方法有如下规则:
1、在构造子类对象时,父类的构造方法一定会被调用,先被执行。
2、 在子类的构造方法使用了super调用父类的构造方法,则按给定的参数调用父类的相应构造方法;且写在构造器的第一行。
3、在子类的构造方法没有使用了super调用父类的构造方法,则父类中的无参数的构造方法会被自动调用。
4、在子类的构造方法没有使用了super调用父类的构造方法,并且父类中也没有定义没有参数的构造方法,则编译不能通过。
如果父类和子类都定义了初始化器,则构造子类对象时,调用顺序为:
父类的静态初始化器——子类静态初始化器——父类的初始化器——父类的构造方法——子类的初始化器——子类的构造方法
8.上转型对象
(1)当用父类对象表示子类对象时,父类对象称为子类对象的上转型对象
(2)当一个父类对象表示的是子类对象时,还可以将该父类对象强制转换成子类对象。
(3)
Aa=new B();//对象的上转型(失去子类特有,只有继承<=>可访问父类的变量不可访问子类特有或者子类重写的方法
Bb=(B)a;对象的下转
9.多态
(1)函数传入的形参可以是父类类型,而实际传入可以是子类对象
(2)函数的返回类型是父类型,而实际返回的是子类对象
(3)父类子类对象的类型转换
1.子类对象无需转换就可以赋值与父类引用
2.严格来讲,父类类型无法转换成子类类型,但是有一种特殊情况,如果父类类型对象原来就是莫一种子类类型的对象,则可以转换成相应的子类类型对象,此时是强制转换。
(4)抽象类与接口
1..关键字abstract修饰的类称为抽象类
2.abstract class 类名
{
实例方法(){}
抽象方法;
}
[访问权限] abstract 数据类型 方法名([参数列表]);
4.抽象类不能被实例化,即不能用new关键字去产生对象;
抽象类被子类继承,子类必须重写抽象方法;抽象方法只需要声明,不需要实现(无方法体);抽象类中可以有非抽象方法,也可以有抽象方法(如果一个类中有抽象方法,该类必须定义成抽象类);抽象方法只有方法的头部,没有方法体。抽象方法一定不能用关键字final修饰。抽象函数必须被重写,除非子类也是抽象类;在抽象类中可以含有普通成员函数。
9.接口
1.是对抽象类的进一步抽象 在Java中单继承,多接口
格式如下
[修饰符]interface接口名[extends 父类.接口列表]
{
[public][static][final]数据类型 变量名=常量值;
[public][abstract]返回值类型 方法名(参数列表)‘
}
2.实现接口
{
成员变量和成员方法;
重写接口A中的所有方法;
重写接口B中的所有方法;
}
3.接口名 对象名=new 实例类构造方法();
4.注意
1、接口不能实例化;
2、常量+抽象方法(只有声明,没有实现);
3、这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
10.其他
1.final类
2.Final可以修饰一个函数,一个类,一个成员变量
3. final常量
最终方法
Final类最终类
4.该成员变量不允许被改变,即不允许重新负责(哪怕是同样一个值),因此常用final来定义一个常量
1、final 成员变量必须在声明时或在构造函数中显式赋值才能使用。一般情况下,在定义时就进行赋值。