B:继承的弊端
类的耦合性增强了。
开发的原则:高内聚,低耦合。
耦合:类与类的关系内聚:就是自己完成某件事情的能力B:什么时候使用继承
继承其实体现的是一种关系:”is a”。 Person Student Teacher 水果 苹果 香蕉 橘子采用假设法。 如果有两个类A,B。只有他们符合A是B的一种,或者B是A的一种,就可以考虑使用继承。
B:为什么呢?
因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。
其实:
每一个构造方法的第一条语句默认都是:super() Object类最顶层的父类。静态代码块Fu 静态代码块Zi 构造代码块Fu 构造方法Fu 构造代码块Zi 构造方法Zi
说中文 打电话
A:方法重写注意事项
a:父类中私有方法不能被重写 因为父类私有方法子类根本就无法继承b:子类重写父类方法时,访问权限不能更低 最好就一致c:父类静态方法,子类也必须通过静态方法进行重写
其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中我会讲解(静态只能覆盖静态)子类重写父类方法的时候,最好声明一模一样。
B:案例演示 方法重写注意事项class Demo8_双桨 { public static void main(String[] args) { DayOne d = new DayOne(); d.泡妞(); d.print(); }}/* * a:父类中私有方法不能被重写 * 因为父类私有方法子类根本就无法继承 * b:子类重写父类方法时,访问权限不能更低 * 最好就一致 * c:父类静态方法,子类也必须通过静态方法进行重写 * 其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中我会讲解(静态只能覆盖静态) * 子类重写父类方法的时候,最好声明一模一样。*/class 双桨 { public void sing() { System.out.println("唱红歌"); } public void 泡妞() { System.out.println("唱红歌搞定林夕合鸟女士"); } public static void print() { System.out.println("Fu print"); }}class DayOne extends 双桨 { public int 泡妞(int x) { System.out.println("霸王硬上弓"); return 0; } public static void print() { //静态只能覆盖静态,其实不算重写,多态时候详细讲解 System.out.println("Zi print"); }}A:方法重写的面试题
Override和Overload的区别?Overload能改变返回值类型吗?overload可以改变返回值类型,只看参数列表方法重写:子类中出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致(或者是子父类)的
方法重载:本类中出现的方法名一样,参数列表不同的方法。与返回值类型无关。
子类对象调用方法的时候:
先找子类本身,再找父类。A:案例演示
方法内部或者方法声明上都演示一下(了解)
基本类型,是值不能被改变
引用类型,是地址值不能被改变,对象中的属性可以改变新闻热点
疑难解答