java学习笔记(八):继承、extends、super、this、final关键字

时间:2020-12-08 20:47:58

 

 

继承解决代码重用的问题,方便管理和维护代码。

java学习笔记(八):继承、extends、super、this、final关键字

 

继承

  • 子类拥有父类非private的属性,方法。

  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

  • 子类可以用自己的方式实现父类的方法。

  • Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类,这是java继承区别于C++继承的一个特性。

  • 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。

 

extends关键字:在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。

 1 public class Animal { 
 2     private String name;   
 3     private int id; 
 4     public Animal(String myName, String myid) { 
 5         //初始化属性值
 6     } 
 7     public void eat() {  //吃东西方法的具体实现  } 
 8     public void sleep() { //睡觉方法的具体实现  } 
 9 } 
10  
11 public class Penguin  extends  Animal{ 
12 }

 

implements 关键字:使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。

 1 public interface A {
 2     public void eat();
 3     public void sleep();
 4 }
 5  
 6 public interface B {
 7     public void show();
 8 }
 9  
10 public class C implements A,B {
11 }

 

super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

java学习笔记(八):继承、extends、super、this、final关键字

 

this关键字:指向自己的引用。

 1 class Animal{
 2     void eat(){
 3         System.out.println("animal eat");
 4     }
 5 }
 6 
 7 class Dog extends Animal{
 8     void eat(){
 9         System.out.println("dog eat");
10     }
11     void eatTest(){
12         this.eat(); // this 调用自己的方法
13         super.eat();// super 调用父类方法
14     }
15 }
16 
17 public class Test {
18     public static void main(String[] args){
19         Animal animal = new Animal();
20         animal.eat();
21         System.out.println("---------------");
22         Dog dog = new Dog();
23         dog.eat();
24         System.out.println("---------------");
25         dog.eatTest();
26     }
27 }

运行输出:

animal eat
---------------
dog eat
---------------
dog eat
animal eat

 

final 关键字:声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:

声明方法:

修饰符(public/private/default/protected) final 返回值类型 方法名(){//方法体}