Java学习笔记-继承

简介

继承,顾名思义,就是子类继承父类的特征和行为,从而使子类拥有父类的各种属性或者方法。


使用继承最大的好处就是可以复用代码。使用已经存在的类的定义作为基础去定义新的类,新的类可以使用父类的功能,可以重写父类的方法,也可以增加自己新的数据和功能。


Java所有的类都是继承于java.lang.Object,当一个类没有继承的两个关键字,则默认继承object祖先类。

继承的特性

  1. 子类拥有父类的非private的属性、方法和构造器。
  2. 子类可以扩展,拥有自己的属性和方法。
  3. 子类可以用自己的方式去实现父类的方法。
  4. Java的继承是单继承。(区别于C++)
  5. 继承会提高代码之间的耦合性。(继承的缺点)

    实例

    父类
    public class Person{
    private String name;
    private int age;
    public Person(String myName,int myAge){
    name=myName;
    age=myAge;
    }
    public void sleep(){
    System.out.println(name+”正在睡”);
    }

    }

    男人

    public class Nanren extends Person{

     public Nanren(String myName,int myAge){
         super(myName, myAge);
     }
    

    }

关键字

extends

类的继承是单一继承,一个子类只能拥有一个父类,extends示例代码如上。

implements

虽然Java是单继承的,但是可以通过implements变相的使Java拥有多继承的特性,继承的对象为接口,之间用逗号隔开。

public interface A{
   public void run();
}

public interface B{
   public void eat();
}

public class C implements A,B{
}

super

可以通过super来访问父类的成员变量。

this

表示自己的引用。

final

被final声明的类是最终类,不能被继承;
被final修饰的方法不能被子类重写;
被final修饰的实例变量不能被修改。

构造器

构造器–即指构造函数或者构造方法。对于构造器来说,它只能被子类调用,而不能被继承。


如果父类有无参构造器,则可以不用在子类构造器中用super去调用父类的构造器,此时系统会自动调用父类的无参构造器。


如果父类的构造器是带有参数的,则子类的构造器必须显式的通过super关键字调用父类的构造器。

public class SuperClass {
    private int n;
    SuperClass(){
       System.out.println("SuperClass()");
}
    SuperClass(int n) {
System.out.println("SuperClass(int n)");
     this.n = n;
    }
 }


class SubClass extends SuperClass{
  private int n;

    SubClass(){
    super(300);
    System.out.println("SuperClass");
  }  

  public SubClass(int n){
   System.out.println("SubClass(int n):"+n);
    this.n = n;
  }
}
  public class TestSuperSub{
   public static void main (String args[]){
  //SubClass sc = new SubClass();
  SubClass sc2 = new SubClass(200); 
  }
 }

使用继承带来的问题

  1. 父类发生改变,则子类必须跟着改变。
  2. 继承破坏了封装,对于父类而言,它的实现细节对与子类来说都是透明的。
  3. 继承增强了程序之间的耦合关系。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值