思考1.为什么JAVA要写构造方法,用set/get方法不也一样吗?构造方法多余吗?
(1)核心本质:产生的时机不同,构造方法 :在new对象的那一瞬间执行。此时对象还没完全创建好,它就先把规矩定死了。set方法:对象已经创建完成后,你随时可以调用。
(2)不可变性的支持,final关键字,如果希望某个属性(比如身份证号、学号)一旦创建就永远不能修改,必须用 final 修饰。而final修饰的成员变量,只能通过构造方法赋值,set方法压根不能调用
因此,构造方法不是多余的,而是必须的。Set/Get 也不是构造方法的平替,而是补充。
2.集成练习
根据下面的描述定义继承结构
学生:属性:姓名、年龄、年级
老师:属性:姓名、年龄、学科


3.继承:Java 只支持单继承,不支持多继承,但可以多实现。 Object:顶级父类。
-
成员变量的继承:就近原则。
-
方法重写快捷键:Alt + Insert。
-
构造方法:父类的构造方法不能被继承,只能通过 super 调用父类构造器来创建对象。
7.多态(Polymorphism):
Person per = new Student(); // 父类引用指向子类对象
8.多态的前提条件① 有继承关系(或实现关系)② 有父类引用指向子类对象
9.多态中成员访问规则:成员变量,编译运行都看左边;成员方法,编译看左边,运行看右边。
10.多态下的类型转换
问题:在多态下,不能直接使用子类独有的功能。
解决方法:向下转型(强制类型转换)
Person p = new Student(); // 向上转型(自动)
Student s = (Student) p; // 向下转型(强制)
转换后即可调用子类特有的属性和方法。