java 继承
继承
子类继承父类除私有内容外的其他内容
继承: 子类可以自动拥有父类中除了私有内容外的其他所有内容.
语法:
public class 子类 extends 父类{
}
那什么样的逻辑我们可以写成继承关系呢? 当出现xxx是一种xxxx的时候. 就可以用继承关系.
比如, 写一个手机类
package com.lewen.day18; public class Phone { public void call(){ System.out.println("打电话"); } }
写个小米手机
package com.lewen.day18; public class Xiaomi extends Phone { }
测试一下
package com.lewen.day18; public class TestExtends { public static void main(String[] args) { Xiaomi xm = new Xiaomi(); xm.call(); } }
我们发现程序没有报错, 并且, 可以正常执行. 但是我们看Xiaomi这个类里并没有写任何代码. 就写了个继承.
对了, 继承就是这样的. Xiaomi继承了Phone的所有. 接下来. 我们试试看加了private的方法会不会被继承
package com.lewen.day18; public class Phone { public void call(){ System.out.println("打电话"); } private void Msn(){ System.out.println("出厂编码"); } }
测试
package com.lewen.day18; public class TestExtends { public static void main(String[] args) { Xiaomi xm = new Xiaomi(); xm.call(); // xm.msn(); } }
不光是方法, 属性也一样
package com.lewen.day18; public class Phone { private String mha; public void call() { System.out.println("打电话"); } private void msn() { System.out.println("出厂编码"); } }
测试
package com.lewen.day18; public class TestExtends { public static void main(String[] args) { Xiaomi xm = new Xiaomi(); xm.call(); // xm.msn(); //报错,找不到 // xm.mha = "4000"; // 报错 // System.out.println(xm.mha); } }
没问题.
OK. 回到继承的概念. 在java里. 子类继承父类. 子类会自动拥有父类中除了私有内容外的其他所有内容
注意: 不是说子类继承了父类就不能写其他的了. 子类还可以写自己的方法和属性. 互不干扰.
package com.lewen.day18; public class Xiaomi extends Phone { public void ai() { System.out.println("小爱同学"); } }
测试:
package com.lewen.day18; public class TestExtends { public static void main(String[] args) { Xiaomi xm = new Xiaomi(); xm.call(); // 父类中方法 xm.ai(); // 子类中方法 } }
所以从另一个角度讲, 子类其实是对父类进行了扩展. 在父类已经给了一些方法和属性的基础上再加一点儿新功能. 可以节省很多的代码.
注意: java只能单继承. 说白了. 每个儿子只能有一个爹