首页 > 代码库 > 笔记 9.19
笔记 9.19
笔记:
1.多态:
1)多态的意义:
1.1)同一类型的引用指向不同的对象时,有不同的实现
------行为的多态(cut()、run()、study()、teach())
1.2)同一个对象被造型为不同的类型时,有不同的功能
------对象的多态(我、水)
2)向上造型:
2.1)父类型的引用指向子类的对象
2.2)能造型成的类型: 父类、所实现的接口
2.3)能点出来什么,看引用的类型
3)强制类型转换,成功的条件:
3.1)引用所指向的对象,就是该类型
3.2)引用所指向的对象,实现了该接口
4)若不符合如上两个条件,则发生类型转换异常ClassCastException,
建议:强转之前通过instanceof来判断引用是否是某种类型
符合强转成功条件instanceof为true,否则为false
2.成员内部类: 单独应用几率并不高
1)类中套中,里面的叫内部类,外面的叫外部类
2)内部类通常只服务于外部类,对外不具备可见性
3)内部类对象通常在外部类中创建
4)内部类中可以直接访问外部类的成员(包括私有的)
内部类中有个隐式的引用指向了创建它的外部类对象
eg: 外部类名.this.
3.匿名内部类:
1)若想创建一个类的对象,并且该对象只创建一次,
此时该类不必命名,称为匿名内部类
2)匿名内部类中想访问外部的数据,该数据必须是final的
4.面向对象三大特征:
1)封装:
1.1)类:封装的是对象的属性和行为
1.2)方法:封装的是具体的业务逻辑功能
1.3)访问控制修饰符:封装的是访问的权限
2)继承:
2.1)作用:代码的复用,避免代码重复
2.2)父类/基类:子类所共有的属性和行为
子类/派生类:子类所特有的属性和行为
2.3)子继承父后,子具有: 子+父
2.4)单一继承、传递性
3)多态:
3.1)意义:
行为的多态、对象的多态
3.2)向上造型、强制类型转换、instanceof
3.3)表现形式:
面向过程编程
面向对象编程
面向接口编程
重写、重载
重载是基于参数的多态
问:内部类有独立的.class吗?
答:有
main(){
Aoo o1 = new Aoo();
Boo o2 = new Boo(); //编译错误
}
class Aoo{
private int a;
void test(){
Boo o = new Boo(); //正确
}
class Boo{
void show(){
System.out.println(a); //正确
System.out.println(Aoo.this.a); //正确
System.out.println(this.a);
}
}
}
我 me = new 我();
讲师 o1 = me;
孩子他妈 o2 = me;
老公的老婆 o3 = me;
o1.授课();
o2.揍他();
o3.咬他();
o3.收工资();
me.授课();
me.揍他();
me.咬他();
me.收工资();
interface 讲师{
void 授课();
}
interface 孩子他妈{
void 揍他();
}
interface 老公的老婆{
void 咬他();
void 收工资();
}
class 我 implements 讲师,孩子他妈,老公的老婆{
重写4个方法
}
设计原则:
1)将公共的属性和行为,抽象到父类中
2)所有子类行为都一样,设计为普通方法
所有子类行为不一样,设计为抽象方法
3)符合既是也是原则时,使用接口
部分子类公共,设计到接口中----单根性的扩展
笔记 9.19