首先通过代码引入
//学生类class Student{ int age; String name; void study(){ }}//工人类 class Worker{ int age; String name; void work(){ }}无论是工人还是学生,都有共同属性:年龄和姓名。 为了提高代码的复用性,可以把工人和学生的共性提取出来
class Person{ int age; String name;}如何让学生和工人和Person联系起来———–这就是继承 (ง •̀_•́)ง
class Student extends Person{ void study() {}class Worker extends Person{ void work(){ }}学生和工人成了子类,人成了父类,将子类和父类联系起来,用extends关键词 继承让类与类之间产生了关系
必须保证类与类之间有所属关系。即类似狗是人类的好朋友,XX是大自然的搬运工,香蕉是水果等等
代码
//父类一class Father1{ void breath(){ } void beat(){ }}//父类二class Father2{ void breath(){ } void speak(){ }}//人继承class Person extends Father1,Father2{}这样写是不能通过编译的 一个类只能有一个父类。即java不能直接继承多个父类 但是java可以实现多接口
class A extends B implements C,D,E (以后写接口)
成员变量:
先看代码:
结果
1:2
特殊情况:
1)如果父类中
private int num1=1;私有后子类就不能直接访问了,setter和getter方法可以用
2)如果父类和子类都定义了相同变量,那么都存在于子类中。用super访问父类,this访问子类 (默认访问子类的num)
class Fu{ int num=1;}class Zi extends Fu{ int num=2; void show(){ System.out.println(num); System.out.println(this.num); System.out.println(super.num); }}class Demo{ public static void main(String[] args){ Zi z = new Zi(); z.show(); }}输出
2 2
成员函数:
还是代码:
输出:
show1 run show2 run
特殊情况:
1)子类父类定义相同函数show(),则运行子类的方法。这叫做重写(override) 【敲黑板】
应用举例:
然后你有了一个要玩游戏的新手机而且维持原功能,只需要
class NewPhone extends Phone{ void run(){ super.run(); System.out.println("玩游戏"); }}父类已经将功能定义了,子类直接用,写内容即可。如果还需要原来的东西,用super调用
在使用时,需要注意: 1.子类覆盖父类必须要保证子类权限大于等于父类权限(public最大) 2.静态覆盖静态,非静态和静态之间不能相互覆盖 3.写法上必须一样,即函数返回值类型 函数名 参数列表都要一样
fu: int show()zi: void show()这样式的就不行
新闻热点
疑难解答