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(); }}
B:继承的弊端
类的耦合性增强了。
开发的原则:高内聚,低耦合。
B:什么时候使用继承
采用假设法。 如果有两个类A,B。只有他们符合A是B的一种,或者B是A的一种,就可以考虑使用继承。
B:为什么呢?
所以,子类初始化之前,一定要先完成父类数据的初始化。
其实:
看程序写结果1class 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(); }}看程序写结果2class 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:方法重写注意事项
c:父类静态方法,子类也必须通过静态方法进行重写
子类重写父类方法的时候,最好声明一模一样。
A:方法重写的面试题
方法重写:子类中出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致(或者是子父类)的
方法重载:本类中出现的方法名一样,参数列表不同的方法。与返回值类型无关。
子类对象调用方法的时候:
A:案例演示
方法内部或者方法声明上都演示一下(了解)
基本类型,是值不能被改变
联系客服