JAVA基础--db10_java多态-内部类
2015-10-01 17:33
621 查看
多态:
多态的好处:提高了代码的扩展性,前期定义的代码可以使用后期的内容(前期定义了一个动物,后面来了一个猪,猪属于动物,可以将猪作为动物传入从而使用)
//一只鸡去吃饭,后来鸡多了,抽成鸡类,让鸡去吃饭;再后来让了猪,再抽取,变成动物,让动物去吃饭。这就是多态的好处
多态的弊端:前期定义的内容不能使用后期子类的特有内容。
多态的前提:1:必须要有关系(继承/实现)
2:必须要有覆盖
注意:如果为了提高扩展性,用父类型创建更好;如果为了使用子类特有功能向下转型。
多态的特点:
成员变量:编译和运行都参考左边
成员函数:编译看左边运行看右边
静态函数:编译和运行都参考左边;其实静态根本不该讨论,因为可以类名调用
内部类:
生成的class字节码文件
生成3个。外部类访问内部类,必须在外部类中创建一个方法,方法中创建内部类的对象才能访问
内部类一般用于类的设计:分析事物时,发现该事物描述中还有事物,而且这个事物还在访问被描述事物的内容
类似:铁扇公主和孙悟空
其他类直接访问内部类中的成员:
Outer.Inner in = new Outer().new Inner();
//解释new后面的内容,外部类对象.成员
如果内部类中定义了静态成员,那么该内部类必须是静态的
几种内部类的书写格式:
还有局部内部类,匿名内部类
局部内部类中访问局部变量,变量必须是final
匿名内部类:就是内部类的简写格式
前提:内部类必须继承或者实现一个外部类或者接口
匿名内部类:其实就是一个匿名子类对象
格式:
new 父类(接口或类){子类内容};
public
classHelloWorld {
public
static voidmain(String[]
args) {
newOuter().method();
}
}
abstract
class Demo{
abstract
void show();
}
class Outer{
int
num = 4;
/* class Inner extends Demo{//内部类
void show(){
System.out.println(num);
}
}*/
public
void method(){
new Demo(){
void show(){
System.out.println("run");
}
}.show();
}
}
情景一:当函数的参数是接口类型时,而且接口中的方法不超过三个
可以用匿名内部类作为实际参数进行传递
里面有多个方法时的调用:new其父类
面向对象,对象的初始化过程:1-6的顺序
多态的好处:提高了代码的扩展性,前期定义的代码可以使用后期的内容(前期定义了一个动物,后面来了一个猪,猪属于动物,可以将猪作为动物传入从而使用)
//一只鸡去吃饭,后来鸡多了,抽成鸡类,让鸡去吃饭;再后来让了猪,再抽取,变成动物,让动物去吃饭。这就是多态的好处
多态的弊端:前期定义的内容不能使用后期子类的特有内容。
多态的前提:1:必须要有关系(继承/实现)
2:必须要有覆盖
注意:如果为了提高扩展性,用父类型创建更好;如果为了使用子类特有功能向下转型。
多态的特点:
成员变量:编译和运行都参考左边
成员函数:编译看左边运行看右边
静态函数:编译和运行都参考左边;其实静态根本不该讨论,因为可以类名调用
内部类:
生成的class字节码文件
生成3个。外部类访问内部类,必须在外部类中创建一个方法,方法中创建内部类的对象才能访问
内部类一般用于类的设计:分析事物时,发现该事物描述中还有事物,而且这个事物还在访问被描述事物的内容
类似:铁扇公主和孙悟空
其他类直接访问内部类中的成员:
Outer.Inner in = new Outer().new Inner();
//解释new后面的内容,外部类对象.成员
如果内部类中定义了静态成员,那么该内部类必须是静态的
几种内部类的书写格式:
还有局部内部类,匿名内部类
局部内部类中访问局部变量,变量必须是final
匿名内部类:就是内部类的简写格式
前提:内部类必须继承或者实现一个外部类或者接口
匿名内部类:其实就是一个匿名子类对象
格式:
new 父类(接口或类){子类内容};
public
classHelloWorld {
public
static voidmain(String[]
args) {
newOuter().method();
}
}
abstract
class Demo{
abstract
void show();
}
class Outer{
int
num = 4;
/* class Inner extends Demo{//内部类
void show(){
System.out.println(num);
}
}*/
public
void method(){
new Demo(){
void show(){
System.out.println("run");
}
}.show();
}
}
情景一:当函数的参数是接口类型时,而且接口中的方法不超过三个
可以用匿名内部类作为实际参数进行传递
里面有多个方法时的调用:new其父类
面向对象,对象的初始化过程:1-6的顺序
相关文章推荐
- JAVA SE 多态的实现机制
- Java线程生命模型
- Eclipse 常用快捷键
- javaweb多窗口展示网页
- JPA && Spring Data && Spring Data JPA
- 工厂模式---java代码实现
- Java小技巧
- java中抽象类与接口的不同之处
- Java多线程1:进程与线程概述
- Java 定时器
- 配置Xampp+Netbeans的PHP可调试开发环境
- SpringMVC 学习指南<一>
- java 实现文件复制的两种方式
- Struts 的数据校验和验证框架
- Java中的异常处理机制的简单原理和应用
- Java模拟简易ATM机运行(无界面、无数据库)
- Maven安装与使用入门
- LintCode-O(1)检测2的幂次
- 01 程序启动工具
- SpringMVC(五)