Day09 继承

本文介绍了Java中的继承概念,包括如何通过`extends`关键字创建子类,以及子类如何访问父类的属性和方法。讨论了成员访问规则,展示了`this`和`super`关键字的用法,并详细解释了方法重写的概念及其应用。通过实例展示了继承带来的代码复用优势,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

学习目标

  1. 继承
  2. 方法重写

学习内容

一:继承
概念:继承是面向特征的三大特征之一,子类可以继承父类的特征(属性和方法),子类中还可以追加新的属性和方法。
实现:在 Java中,使用关键字extends来继承类.
例如:

package com.hg.Demo01;

public class Demo01Extends {
  public static void main (String[]  args) {
	 Teacher teacher=new  Teacher();
	 
	 teacher.method();
	 teacher.methodChildren();
	 
	 
	 System.out.println("teacher.name");
	    	System.out.println("teacher.age");
	    	
	    	teacher.methodChildren();
	    	Assistant  assistant= new  Assistant();
	    	
	    	assistant.method ();
	    	

	 } 
}

package com.hg.Demo01;

public class Employee {

	String name;
	int  num;
	public void method() {
		System.out.println("我是父类的方法");
	}
	
}

package com.hg.Demo01;

public class Teacher extends Employee {

	
	public void methodChildren() {
		System.out.println("我是子类====老师的方法");
		System.out.println("我要开始讲课了!");
	}
}

package com.hg.Demo01;

public class Assistant  extends Employee {

	
	public  void  methChildren() {
		System.out.println("我是子类");
		System.out.println("我要改作业");
	}
}

继承中成员访问特征
在子类中访问一个变量,采用就近原则
1.子类局部范围找
2.子类成员范围找
3.父类成员范围i找
4.如果都没有则报错
例如:

package com.hg.Demo02;

public class Demo02Extend {
	public static void main (String[]  args) {
		Fu fu=new   Fu();
		System.out.println("fu.numFu");
		System.out.println("================");
	
		
		Zi zi=new   Zi();
		System.out.println("zi.numFu");
		System.out.println("zi.numZi");
		System.out.println("================");
		
		System.out.println("zi.num");
		System.out.println("============");
		zi.methodZi();

	}
	
}

package com.hg.Demo02;

public class Fu {
	 int numFu=10;
	    int  num=100;
	    
	    
	    public void methodFu() {
	    	System.out.println("我是父类的方法");
	    }
}

package com.hg.Demo02;

public class Zi   extends  Fu{
    int numZi=20;
    int  num=200;
    
    
    public void methodZi() {
    	int  num=2000;
    	System.out.println("我是子类的方法");
    }
}

super

this&super关键字
this关键字:代表本类对象的引用
super关键字:代表父类储存空间的标识,意为父类的对象引用
例如:

package com.hg.Demo05;

public class Demo05Extends {
	public static void main (String[] args) {
		Zi  zi=new Zi();
		
	}
}

package com.hg.Demo05;

public class Fu {
  public Fu() {
	  System.out.println("父类无参构造方法 ");
  }
  public Fu(  int num) {
	  System.out.println("父类一个参数的,有参构造方法 ");
  }
  public Fu(  int  num,String name) {
	  System.out.println("父类两个参数的,有参构造方法 ");
  }
}

package com.hg.Demo05;

public class Zi extends  Fu {
   public  Zi() {
	   super(20,"颜敏");
	   System.out.println("子类无参构造方法 ");
   }
}

方法重写

1.概念
子类出现了和父类一摸一样的方法声明
2.应用场景
子类需要父类的功能,而功能的主体子类有自己特有内容时,科协重写父类中的方法,这样既沿袭了父类的功能,也定义了子类特有的内容。
3.Override注解
用来检测当前的方法,是否是重写的方法,起到校验的效果。
例如:

package com.hg.Demo03;

import com.hg.Demo04.Phone;

public class Demo03Extend {
	public static void main (String[]  args) {
		
  Zi  zi= new  Zi();
  zi.method();
  zi.methodZi();
	}
}

package com.hg.Demo03;

public class Fu {
public void  methodFu() {
	System.out.println("我是父类方法  methodFu");
	
}
public void  method() {
	System.out.println("我是父类方法  method");
	
}
}

package com.hg.Demo03;

import com.hg.Demo02.Fu;

public class Zi  extends  Fu {
	public void  methodZi() {
		System.out.println("我是子类方法  methodZi");
		
	}
	public void  method() {
		System.out.println("我是子类方法  method");
		
	}
}

父类与子类

继承的主要优势在于代码的可重用性,一个类一经定义和调试便可以用来创建新的子类,这样除了节约大量的时间和精力以外,还不用重新输入相同的代码。
例如:

package com.hg.Demo06;

public class Demo06Extends {
	public static void main (String[] args) {
  Zi zi=new  Zi();
  zi.methodZi();
	}
}

package com.hg.Demo06;

public class Fu {
   int  num=100;
   public void method ()
   {
	   System.out.println(" 父类方法");
   }
}

package com.hg.Demo06;

public class Zi  extends  Fu {
   int  num =20;
   public  Zi() {
	   super();
	   
   }
   public void method() {
	   System.out.println("子类方法 ");
   }
   public void methodZi() {
	   System.out.println(num);
	   System.out.println(super.num);
	   super.method();
   }
}

练习

在这里插入图片描述
代码:

package com.hg.Demo04;

public class Demo04Phone {
public static void main (String[]  args) {
	Phone phone=new  Phone();
	phone.call();
	phone.send();
	 System.out.println("======");
	phone.show();
	
	 System.out.println("=============== ");
	NewPhone   newphone=new  NewPhone();
	newphone.call();
	newphone.send();
	 System.out.println("=====");
	newphone.show();
}
}

package com.hg.Demo04;

public class NewPhone  extends  Phone {
   public  void  show() {
	   super.show();
	   
	   System.out.println("显示头像 ");
	   System.out.println("显示归属地  ");
   }
}

package com.hg.Demo04;

public class Phone {
public void call() {
	System.out.println("打电话  ");

}
public void send() {
	System.out.println("发短信  ");

}
	public  void  show() {
		   System.out.println("老手机显示号码  ");
}
}

上述代码运行结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述2020080605041

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值