1. 多态中成员的特点:
1.1:成员变量:编译时期能访问哪些变量看父类,执行结果还看父类
1.2:成员函数:编译时期能访问哪些函数看父类,执行结果看子类(前提是子类重写了父类中的方法,没有重写则看父类)
1.3:静态成员函数:编译执行都看父类
2.多态:多种形态
a.多态:父类类型的引用指向了子类类型的对象
b.多态的前提条件:必须存在继承或实现
c.多态的弊端:把子类类型的对象看成父类类型,那么就只能使用父类中定义的功能
3.接口的好处:(接口可以解决java的单继承问题接口可以多实现,实现多个接口不会出现调用的不确定性,因为接口中的方法都是抽象的,都没有实现在创建子类对象调用重写的方法时,很明确就是在调用重写后的方法)
a:可以提高程序的扩展性
b:接口就是一些对外暴露的规则
c:可以降低类之间的依赖关系
4.抽象
抽象类的特点:
a:抽象类不能创建对象,因为含有未实现的抽象方法
b:继承抽象类的子类没有实现抽象类中的抽象方法,那么这个子类也是抽象类
A:抽象类一定是父类吗?
一定是
B:抽象类有构造方法吗?
有构造方法,用于子类对象的初始化
抽象类和普通类的相同点:都是类,都是用来描述事物的
不同点:1:抽象类不能创建对象,普通类可以
2:抽象类可以含有抽象方法,普通类不可以
C:abstract不能和哪些关键字同时使用?
1:final:抽象类必须可以被继承,final修饰的类不能被继承
2:static:抽象方法不能通过类名调用,静态方法可以通过类名直接调用
3:private:抽象的方法必须可以被子类重写,但是私有的方法不能被子类覆盖
D:抽象类一定含有抽象方法吗?
不一定,当希望一个类不能被创建对象时,可以把该类修饰为abstract的
5.内部类
内部类和外部类的联系:内部类可以访问外部类所有的方法和属性,如果内部类和外部类有相同的成员方法和成员属性,内部类的成员方法调用要优先于外部类(即内部类的优先级要高于内部类:注意:只限于类内部,在主方法内,内部类的对象不能访问外部类的成员方法和属性),外部类只能访问内部类的静态常量或者通过创建内部类来访问内部类的成员方法和属性。
内部类定义的静态常量可以全局访问。
创建内部类
第一种方式
假设A是外部类,B是内部类
A a=new A();
A.B b=a.new B();
或者用A类的匿名对象来访问
A.Bb=new A().new B();
普通类的权限有public和default两种
而内部类有四种
6.super不是引用也不是函数,是一种语法。
子类调用父类的构造函数必须由super调用。Super必须在子类构造函数的第一个位置。
7.异常
try {}catch{}finally{} 的工作原理
1)try{} 把可能出现异常的语句包起来,如果出现了异常,就跳出这个try {} 语句块,到后边处理这种异常的地方进行处理,如果一直没有处理,就抛给了上级
2)catch{}语句用来捕获异常,
a)try {} 后面可以跟多个catch{}
b)前面的catch{} 捕获的异常,应该是后边catch{}语句捕获异常的子类,否则编译通不过(JAVA不允许出现废话)
c) catch{}语句里面一般对异常的处理
Exception e=new Exception(“出错”);
e.getMessage();//打印出“出错”
e.printStackTrace();//打印出异常所属的类,以及异常信息,和跟踪的栈信息
4)finally{}的代码不管出不出异常,都会执行。
a) finally{}语句一般用来释放资源 。
b)finally{}语句一定会执行,除非System.exit(0);
c)如果有return语句,当正常运行时,先执行finally,然后再return
当发生异常后,先执行catch,然后finally及其它语句
d)try可以无cath语句,直接跟finally语句:try {}finally{}//用在throws 异常的地方
e)一个方法中只能有一个finally
f)finally中不要用return,会覆盖正常的返回结果,有可能丢失异常
5)这三个代码块可以互相嵌套