黑马程序员技术交流社区

标题: java基础知识---面向对象(三) [打印本页]

作者: LiuYongqiang    时间: 2016-4-20 00:36
标题: java基础知识---面向对象(三)
java基础知识---面向对象(三)
1.多态的前提?
1、要有继承关系。
2、要有方法重写。
3、要有父类引用指向子类对象。
2.多态中成员访问特点?
只有非静态的方法,是编译看左边,运行看右边。原因是因为:方法有重写。
其他(静态方法,成员变量)都是编译看左边(父类),运行看左边(父类)。
3.Person p=new Student();向上转型
   Student s=(Student)p ;向下转型
4.多态的好处?
1、维护性。
2、扩展性。
3、可以作为方法形参的数据类型,用于接收其任意的子类对象。
弊端:父类引用不能使用子类的特有成员。
5.抽象类的成员特点?比普通类多了一个成员方法
成员变量:可以是变量,也可以是常量。
构造方法:有。
抽象类既然不能被实例化,要构造方法有什么用?
用于子类对象访问父类数据前,对父类数据进行初始化。
成员方法: 可以是抽象方法,也可以是非抽象方法。
抽象方法:强制要求子类必须完成某些事情。
非抽象方法:用于被子类继承,提高代码的复用性。
6.abstract不能与哪些关键件共存?       
   private:被private修饰的内容,子类是没有办法继承的,但是抽象方法是要求子类必须重写的,所以他们互相矛盾
   final:被final修饰的内容,子类是没有办法重写的,但是抽象方法是要求子类必须重写的,所以他们互相矛盾
   static:被static修饰的内容可以通过类名.的形式调用,但是我们知道抽象方法是没有方法体的,所以及时可以通过类名.的方式去调用,也是没有任何  意义的,所以他们不能共存。
7.一个抽象类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
可以,这么做的目的只有一个,就是不让其他的类来创建该类的对象。
8.接口成员的特点?接口中只能有常量和抽象方法
9.抽象类与接口的区别?
1、成员区别
2、关系区别
3、设计理念的区别:
抽象类:被继承,体现的是is a的关系,里边定义的是整个继承体系的 共性内容。
接口:被实现,体现的是like a的关系,里边定义的是整个继承体系的 扩展内容。
10.定义包时注意事项
1、package语句必须是程序的第一条可执行语句。
2、一个java文件中,package语句只能有一个。
3、如果不写package,表示默认无包名。
11.导包的时候不要写.*
12.四种权限修饰符
private:只能在本类中被使用。
记忆:强调的是给 自己 使用。
默认:本类,同包下的类。
记忆:强调的是给 同包下类的 使用。
protected:本类,同包下的类,不同包下的子类。
记忆:强调的是给 子类 使用。
public:公共的,给大家使用。
记忆:强调的是给 大家 使用。
注意:
被public修饰的类叫公共类(顶级类),一个java文件中,公共类只能有一个,
并且公共类名必须和java文件名一致。
13.对匿名内部类的理解?   它是没有名字的局部内部类.可以理解为继承了类或实现了接口的匿名子类对象.
14.在内部类的成员方法中,如何使用局部变量,内部类的成员变量,以及外部类的成员变量?
局部变量:直接用。
内部类的成员变量:通过 this. 的形式调用。
外部类的成员变量:通过 外部类名.this. 的形式调用。
内部类之所以能使用外部类的成员,是因为内部类能获取到外部类的引用: 外部类名.this
15.成员内部类可以用private(安全),static(为了调用方便)修饰
16.局部内部类访问局部变量必须用final修饰,为什么?
因为当调用这个方法时,局部变量如果没有用final修饰,他的生命周期和方法的生命周期是一样的,当方法弹栈,这个局部变量也会消失,那么如果局部内部类对象  还没有马上消失想用这个局部变量,就没有了,如果用final修饰会在类加载的时候进入常量池,即使方法弹栈,常量池的常量还在,也可以继续使用.但是jdk1.8取消  了这个事情,所以我认为这是个bug.
17.匿名内部类格式?   new类名或接口名(){重写方法};





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2