大良建网站/打开百度网址
文章目录
- java继承
- 基本概述
- 继承的基本演示
- 演示一
- 继承中的成员变量
- 演示
- 重名变量的访问
- 演示
- 方法覆盖重写
- 演示一
- 继承中的构造方法
- 演示
- 写在最后的话:
这里是一段防爬虫文本,请读者忽略。
本文原创首发于CSDN,作者IDYS
博客首页:https://blog.csdn.net/weixin_41633902/
本文链接:https://blog.csdn.net/weixin_41633902/article/details/115741306
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!
java继承
基本概述
- 面向对象三大特征:
- 封装性
- 继承性
- 多态性
- 继承的特点
- 子类可以拥有父类的“内容”
- 子类还可以拥有自己专有的内容
继承的基本演示
演示一
其他类
package com.idayuanshuai.www.Demo12;public class Employee {public void method(){System.out.println("idys speaking");}
}package com.idayuanshuai.www.Demo12;public class Teacher extends Employee {}
主类
package com.idayuanshuai.www.Demo12;public class TestDemo1 {public static void main(String[] args) {Teacher te = new Teacher();te.method();}
}
结果输出:
idys speaking
继承中的成员变量
- 在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式
- 直接通过子类对象访问成员变量
- 等号左边是子类的变量,就优先用子类的变量,没有则向上查找
- 间接通过成员方法访问成员变量
- 该方法属于那个类,就优先使用这个的变量,没有则向上查找
演示
其他类:
package com.idayuanshuai.www.Demo13;public class FatherClass {int fNum =10;int num = 2;public void method(){System.out.println(num);}
}package com.idayuanshuai.www.Demo13;public class SonClass extends FatherClass{int num =20;int sNum = 100;
}
主类
package com.idayuanshuai.www.Demo13;public class TestDemo {public static void main(String[] args) {SonClass s = new SonClass();s.method();new FatherClass().method();System.out.println(s.num);System.out.println(s.fNum);}
}
输出结果
2
2
20
10
重名变量的访问
- 在子类中访问重名变量的方法
- 访问局部变量:直接输出
- 访问自己类的成员变量:this.成员变量名
- 访问父类的成员变量:super.成员变量名
演示
- 其他类
package com.idayuanshuai.www.Demo14;public class SonClass extends FatherClass {int num = 20;public void method(){System.out.println(num);System.out.println(this.num);System.out.println(super.num);}
}package com.idayuanshuai.www.Demo14;public class FatherClass {int num=2;
}
- 主类
package com.idayuanshuai.www.Demo14;public class TestDemo1 {public static void main(String[] args) {new SonClass().method();}
}
- 输出
20
20
2
方法覆盖重写
- 重写:方法名一样;参数列表一样
- 重载:方法名一样,参数列表不一样
@Override
:写在方法前面,用来检测是不是有效的正确覆盖重写- 子类方法的返回值必须【小于等于】父类方法的返回值范围
java.lang.Object
类是所有类的公共最高类(祖宗类),java.lang.String
是java.lang.Object
的子类- 子类方法的权限必须【大于等于】父类方法的权限修饰符
public > protected > (default)> private
- 设计原则:对于已经投入使用的类,尽量不要修改,推荐定义一个新的类,来重复利用其中共性内容,并且添加改动新内容
演示一
- 其他类
package com.idayuanshuai.www.Demo15;public class Phone {public void call(){System.out.println("打电话");}public void send(){System.out.println("发短信");}public void show(){System.out.println("显示手机号码");}
}package com.idayuanshuai.www.Demo15;public class NewPhone extends Phone {@Overridepublic void show() {super.show();System.out.println("显示头像");System.out.println("显示姓名");}
}
- 主类
package com.idayuanshuai.www.Demo15;public class TestDemo1 {public static void main(String[] args) {Phone ph = new Phone();ph.show();System.out.println("================");NewPhone np = new NewPhone();np.show();}
}
- 输出结果
显示手机号码
================
显示手机号码
显示头像
显示姓名
继承中的构造方法
- 子类构造方法当中有一个默认隐含的
super()
调用,所以一定是先调用父类构造,然后执行子类构造 - 子类构造可以通过
super
关键字来调用父类重载构造 super
的父类构造调用,必须是子类构造方法的第一个语句,不能一个子类构造调用多次super
构造- 子类必须调用父类构造方法,不写则会直接调用
super()
;写了则用写了的super
,super构造方法只有一个
演示
- 其他类
package com.idayuanshuai.www.Demo16;public class FatherClass {public FatherClass(int n){System.out.println("your input is "+n);}public FatherClass(){System.out.println("no input");}
}package com.idayuanshuai.www.Demo16;public class SonClass extends FatherClass {public SonClass(){super(20);System.out.println("son class");}
}
- 主类
package com.idayuanshuai.www.Demo16;public class TestDemo1 {public static void main(String[] args) {SonClass sonClass = new SonClass();}
}
- 输出结果
your input is 20
son class
java
语言的继承是单继承,子类只能继承一个父类。
写在最后的话:
- 无论每个知识点的难易程度如何,我都会尽力将它描绘得足够细致
- 欢迎关注我的CSDN博客,IDYS’BLOG
- 持续更新内容:
linux基础 | 数据通信(路由交换,WLAN) | Python全栈 | 云计算 - 如果你有什么疑问,或者是难题。欢迎评论或者私信我。你若留言,我必回复!
- 虽然我现在还很渺小,但我会做好每一篇内容。谢谢关注!