javaday9

继承、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只能单继承,不能多继承

2020080605044

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bai3322732541

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值