ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

day 09

2021-04-11 20:06:20  阅读:90  来源: 互联网

标签:子类 09 System day public println 父类 class


继承、super、this、抽象类

1.继承

类的继承是面向对象程序设计的一个重要特点,通过继承可以实现代的重用微维示的类称为父类或超类(superclas) .由继承得到的类称为子类或派生类。

1.1定义:

继承就是子类继承父类的属性和行为,使得子类的对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。

1.2继承的格式

class父类{
public class fx {
public void metfu() {
System.out.println(“我是fu类 metzi”);
}

public void method() {
	System.out.println("我是fu类  method");
}

}
}
class 子类 extends 父类{
public class fl extends fx{

public void metzi() {
	System.out.println("我是子类  metzi");
}
@Override 
public void method() {
	System.out.println("我是子类  method");
}

}
}
public class fu {
public static void main (String[] args) {
fl zi=new fl();
zi.method();
zi.metfu();
zi.metzi();

}

}

1.3继承后的特点 --成员变量

成员变量不重名时,代码入下

class fu{
int num =2;
}
class zi extends fu{
int num1= 3;
public void show(){
System.out.println{num}
System.out.println{num1}
}
}
class xu {
public static void main (String[] args) {

}
}
结果
num =2
num1 =3

成员变量相同

class fu{
int num =2;
}
class zi extends fu{
int num= 3;
public void show(){
System.out.println{num}
System.out.println{num}
}
}
class xu {
public static void main (String[] args) {
zi s =new zi();
s.show();
}
}
结果
num =3
num1 =3在这里插入代码片

注意

子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用super关键字,修饰父类成员变量,类似于之前学过的this.

使用格式:

super.父类成员变量名
class fu{
int num =2;
}
class zi extends fu{
int num= 3;
public void show(){
System.out.println{super.num)
System.out.println{this.num}
结果
num=2
num=3
}

1.4继承后的特点 --成员方法

成员方法不重名

如果子类父类中出现不重名的成员方法,这时的调用是没有影响的。对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。代码如下:
class fu{
public void show(){

 System.out.println(父类)
}
class zi extends fu{
	
	public void show1(){

 System.out.println{子类}
 }

public class xu {
public static void main (String[] args) {
zi s =new zi();
s.show();
s.show1();
结果
父类
子类
}

成员方法重名–重写(Override)

如果子类父类中出现重名的成员方法,这时的访问是一-种特殊情况, 叫做方法重写(Override)。

●方法重写

子类中出现与父类一 模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。
class fu{
public void show(){

 System.out.println(父类)
}
class zi extends fu{
	
	public void show(){

 System.out.println{子类}
 }

public class xu {
public static void main (String[] args) {
zi s =new zi();
s.show();//只有这一个
结果
子类
}

重写的应用

子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从而进行扩展增强。比如新的手机增加来电显示头像的功能,代码如下:
public class phoneA {
public void call() {
System.out.println(“打电话”);
}
public void send() {
System.out.println(“发短信”);
}
public void show() {
System.out.println(“显示电话号码”);
}
}

public class phoneB extends phoneA {
public void show() {
System.out.println(“显示电话号码”);
System.out.println(“显示头像”);
System.out.println(“显示归属地”);
}

}

public class phone {
public static void main(String[] args) {
phoneB x=new phoneB();
x.call();
x.send();
x.show();
System.out.println("=========");

	phoneA X=new phoneA();
	X.call();
	X.send();
	X.show();
}

}
打电话
发短信
显示电话号码
显示头像
显示归属地

打电话
发短信
显示电话号码

1.5继承后的特点 --构造方法

1.构造方法的名字是与类名一致的。 所以子类是无法继承父类构造方法的。
2.构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构造方法中默认有一一个super(),表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用。代码如下:
class fu{
fu(){

 System.out.println(父类)
}
class zi extends fu{
	
	zi(){

 System.out.println{子类}
 }

public class xu {
public static void main (String[] args) {
zi s =new zi();
结果
父类
子类

1.6super和this的含义

父类空间优先于子类对象产生
在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空间,便可以包含其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员。代码体现在子类的造方法调用时,一定先调用父类的构造方法。理解图解如下:
在这里插入图片描述
super:代表父类的春初空间标识(可以理解为父亲的引用)
this:代表当前对象的引用(谁调用谁就用谁)

1.7 继承特点

1、java只能单继承,不能多继承
2020080605030

标签:子类,09,System,day,public,println,父类,class
来源: https://blog.csdn.net/qq_55689304/article/details/115604877

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有