首页 > 编程 > Java > 正文

JAVA的继承

2019-11-10 16:58:46
字体:
来源:转载
供稿:网友

1.什么是继承


首先通过代码引入

//学生类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关键词 继承让类与类之间产生了关系


2.什么时候定义继承


必须保证类与类之间有所属关系。即类似狗是人类的好朋友,XX是大自然的搬运工,香蕉是水果等等


3.java多继承


代码

//父类一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 (以后写接口)


4.子父类的成员变量和成员函数


成员变量


先看代码:


class Fu{ int num1=1;}class Zi extends Fu{ int num2=2;}class Demo{ public static void main(String[] args){ Zi z = new Zi(); System.out.PRintln(z.num1+":"+z.num2); }}

结果

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


成员函数


还是代码:


class Fu{ void show1{ System.out.println("show1 run"); }}class Zi extends Fu{ void show2{ System.out.println("show2 run"); }}class Demo{ public static void main(String[] args){ Zi z = new Zi(); z.show1(); z.show2(); }}

输出:

show1 run show2 run


特殊情况:


1)子类父类定义相同函数show(),则运行子类的方法。这叫做重写(override) 【敲黑板】


应用举例:


//父类class Phone{ void run(){ System.out.println("打电话"); System.out.println("接电话"); }}

然后你有了一个要玩游戏的新手机而且维持原功能,只需要

class NewPhone extends Phone{ void run(){ super.run(); System.out.println("玩游戏"); }}

父类已经将功能定义了,子类直接用,写内容即可。如果还需要原来的东西,用super调用

在使用时,需要注意: 1.子类覆盖父类必须要保证子类权限大于等于父类权限(public最大) 2.静态覆盖静态,非静态和静态之间不能相互覆盖 3.写法上必须一样,即函数返回值类型 函数名 参数列表都要一样

fu: int show()zi: void show()

这样式的就不行


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表