笔记 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);
}
}
}

多态1.2)同一个对象(我)被造型为不同的类型(讲师、孩他妈...)时,有不同的功能
我 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.1)同一类型(动物)的引用指向不同的对象(Tiger、Bird...)时,有不同的实现
动物 o1 = new Tiger();
动物 o2 = new Bird();
动物 o3 = new Fish();

o1.run();
o2.run();
o3.run();


abstract class 动物{
abstract void run();
}
class Tiger extends 动物{
void run(){ 在地上跑 }
}
class Bird extends 动物{
void run(){ 在天上飞 }
}
class Fish extends 动物{
void run(){ 在水里游 }
}


设计原则:
1)将公共的属性和行为,抽象到父类中
2)所有子类行为都一样,设计为普通方法
所有子类行为不一样,设计为抽象方法
3)符合既是也是原则时,使用接口
部分子类公共,设计到接口中----单根性的扩展

猜你喜欢

转载自luckybrown.iteye.com/blog/2330872