小白理解继承概念

继承

  1. 继承是Java面向对象编程技术的一块基石,因为它允许创建分等级层次的类封装方式:类
  2. 子类继承父类的特征和行为,使得子类对象具有父类对象的特征和方法
  3. 继承需要符合一个关系:is-a , 子类是更具体的父类
  4. 在声明子类时候,需要通过关键字"extends"表达继承

继承特性

  1. 子类拥有父类非private的成员变量和方法
  2. 子类可以拥有自己的成员变量和方法,即子类可以对父类进行扩展
  3. 子类可以重新实现父类的方法,override
  4. Java只支持单继承,即只能有一个父类
  5. super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
  6. this关键字:指向自己的引用

构造方法

  1. 子类不能继承父类的构造器(构造方法或者构造函数),如果父类的构造器带有参数,则必须在子类的构造器中显式的通过super关键字调用父类的构造器并配以适当的参数列表。
  2. 如果父类构造器没有参数,则在子类的构造器中不需要使用super关键字调用父类构造器,系统会自动调用父类的无参构造器。
  3. 代码实例。

修饰符

  1. 修饰符用于控制变量,类 的作用域和一些访问限制
  2. 访问权限修饰符:public,protected,private,default(即不设置)
        final
            final <类>; -> 防止类被继承
        
            final <变量>; -> 防止变量被修改引用到另外一个对象,可称为"常量"
            
                思考:常量指向的对象能否被修改?
                
            final <方法>;-> 防止方法被重载(override)

代码实例

有一个父类News,拥有自己的 title、content属性,同时拥有一个display方法,
下面有一个子类FileNews ,通过extends 继承了news,这时候这个FileNews类就拥有了父类的title content属性,也拥有了display方法,不过这里它进行了一个重写,所以在main方法里调用display方法时,News的输出是带有换行的,但是FileNews的输出是一个:号,内容在一行。

package news;

public class News {

    protected String title;

    protected String content;

    public News(String title,String content){
        this.title = title;
        this.content = content;
    }

    public String getTitle(){
        return title;
    }

    public String getContent(){
        return content;
    }

    // 控制如何显示
    public String display(){
        return title + "\n" + content;
    }


}

package news;

public class FileNews extends News {

    public FileNews(String title,String content){
        super(title,content);
    }

    // 控制如何显示
    public String display(){
        return title + ":" + content;
    }

}

package news;

public class Main {

    public static void main(String[] args) {
        News news = new News("abc","blabla");
        System.out.println(news.display());

        FileNews fileNews = new FileNews("abc","blabla");
        System.out.println(fileNews.display());

    }


}


你可能感兴趣的:(小白理解继承概念)