代码块
看程序写结果:
代码块的面试题
class Student { static { System.out.println("Student 静态代码块"); } { System.out.println("Student 构造代码块"); } public Student(){ System.out.println("Student 构造方法"); } } class Demo2_Student(){ static { System.out.println("Demo2_Student静态代码块); } public static void main(String[] args){ System.out.println("我是main方法"); Student s1 = new Student(); Student s2 = new Student(); } }
继承
继承的好处和弊端:
A:继承的好处
a:提高了代码的复用性
b:提高了代码的维护性
c:让类与类之间产生了关系,是多态的前提
B:继承的弊端
类的耦合性增强了
开发的原则:高内聚,低耦合
耦合:类与类的关系
内聚:就是自己完成某件事情的能力
Java中类的继承特点:
a:Java只支持单继承,不支持多继承
有些语言是支持多继承的,格式:extends 类1,类2,…
b:java支持多层继承(集成体系)
注:
如果想用这个体系的所有功能用最底层的类创建对象
如果想看这个体系的共性功能,看最顶层的类
继承的注意事项和什么时候使用继承
A:继承的注意事项
a:子类只能继承父类所有非私有的成员(成员方法和成员变量)
b:子类不能继承父类的构造方法,但是可以通过super关键字去访父类构造方法
c:不要为了部分功能二区继承
B:什么时候使用继承
继承其实体现的是一中关系:“is a”
采用假设法
如果有两个类A,B。只有他们符合A是B的一种,或者B是A的一种,就可以考虑使用继承。
this和super的区别和应用:
A:this和super分别代表什么?
this:代表当前对象的引用,谁来调用我,我就代表谁
super:代表当前对象父类的引用
B:this和super的使用区别
a:调用成员变量
this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
super.成员变量 调用父类的成员变量
b:调用构造方法
this(...) 调用本类的构造方法
super(...) 调用父类的构造方法
c:调用成员方法
this.成员方法 调用本类的成员方法,也可以调用父类的成员方法
super.成员方法 调用父类的成员方法
继承中构造方法的注意事项:
super(...)或者this(...)必须出现在构造方法的第一条语句上
继承中的面试题
看程序写结果1:
class Fu(){ public int num = 10; public Fu(){ System.out.println("fu"); } } class Zi extends Fu{ public int num = 20; public Zi(){ System.out.println("zi"); } public void show(){ int num = 30; System.out.println(num); System.out.println(this.num); System.out.println(super.num); } } class Test1_Extends{ public static void main(String[] args){ Zi z = new Zi(); z.show(); } }
看程序写结果2:
class Fu{ static { System.out.println("静态代码块Fu"); } { System.out.println("构造代码块Fu"); } public Fu(){ System.out.println("构造方法Fu"); } } class Zi extends Fu { static { System.out.println("静态代码块Zi"); } { System.out.println("构造代码块Zi"); } public Zi(){ System.out.println("构造方法Zi"); } } Zi z = new Zi();
方法重写的概述及其应用:
A:什么是方法重写
重写:子父类出现了一模一样的方法(注意:返回值类型可以是子父类)
B:方法重写的应用:
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。
这样,即沿袭了父类的功能,又定义了子类特有的内容。
方法重写的注意事项:
a:父类中私有方法不能被重写
因为父类私有方法子类根本就无法继承
b:子类重写父类方法时,访问权限不能更低
最好一致
c:父类静态方法,子类也必须通过静态方法进行重写
这个也算不上方法重写,因为静态只能覆盖静态
子类重写父类方法的时候,最好声明一模一样
方法重写:
子类中出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致(或者是子父类)的。
方法重载:
本类中出现的方法名一样,参数列表不同的方法。与返回值类型无关。
子类对象调用方法的时候:
先找子类本身,再找父类