java的特征——继承

继承的概述

继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似。

继承可以理解为一个类从另一个类获取方法和属性的过程。如果类B继承于类A,那么B就拥有A的方法和属性。

继承使用 extends 关键字。
例子:people类与teacher类的继承关系
class People{
    String name;
    int age;
    int height;
   
    void say(){
        System.out.println(name,age,height);
    }
}
class Teacher extends People{
    String school; 
    String subject; 
    int teachyear; 
   
    // 覆盖 People 类中的 say() 方法
    void say(){
        System.out.println( name,school,subject,teachyear)
    }
   
    void lecturing(){
        System.out.println(age);
    }
    
    子类可以覆盖父类的方法。
	子类可以继承父类除private以为的所有的成员。
	构造方法不能被继承。

super关键字

super 关键字与 this 类似,this 用来表示当前类的实例,super 用来表示父类。
super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法。
super 关键字的功能:
调用父类中声明为 private 的变量。
点取已经覆盖了的方法。
作为方法名表示父类构造方法。

调用父类的构造方法
在许多情况下,使用默认构造方法来对父类对象进行初始化。当然也可以使用 super 来显示调用父类的构造方法。
public class Demo{
    public static void main(String[] args) {
        Dog obj = new Dog("旺财", 3);
        obj.say();
    }
}
class Animal{
    String name;
    public Animal(String name){
        this.name = name;
    }
}
class Dog extends Animal{
    int age;
    public Dog(String name, int age){
        super(name);
        this.age = age;
    }
    public void say(){
        System.out.println("我叫"+name+“我”+age+“age”);
    }
}

java只允许单继承不允许多继承(一个子类继承一个父类)

错误的继承:

class A{
}
class B{
}
class C extends A,B{
}
C继承A和B的主要目的是拥有A和B中的操作,为了实现这样的目的,可以采用多层继承的形式完成。

class A{
}
class B extends A{
}
class C extends B{
}

在继承时,子类会继承父类的所有结构。

在进行继承的时候,子类会继承父类的所有结构(包括私有属性、构造方法、普通方法)
class Person {
    private String name;
    private int age;
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name=name;
    }
    public int getAge()
    {
        return age;
    }
    public void setAge(int age)
    {
        this.age=age;
    }
    public Person()
    {
        System.out.println("父类的构造方法");
    }
    public void fun()
    {
        System.out.println("好好学习。");
    }
}
class Student extends Person{
    private String schoolName;
    public String getSchoolName()
    {
        return schoolName;
    }
    public void setSchoolName(String schoolName)
    {
        this.schoolName=schoolName;
    }
    public Student()
    {
        System.out.println("子类的构造方法");
    }
}
public class Test2{
    public static void main(String[] args)
    {
        Student student=new Student();
        student.setName("小明");
        student.setAge(18);
        System.out.println("姓名:"+student.getName()+" 年龄:"+student.getAge());
        student.fun();
    }
}

继承的限制

子类对象在进行实例化前首先调用父类构造方法,再调用子类构造方法实例化子类对象。
class Person {
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name=name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age=age;
}
//构造方法
public Person()
{
System.out.println(“父类的构造方法”);
}
}
class Student extends Person{
private String schoolName;
public String getSchoolName()
{
return schoolName;
}
public void setSchoolName(String schoolName)
{
this.schoolName=schoolName;
}
//构造方法
public Student()
{
System.out.println(“子类的构造方法”);
}
}
public class Test2{
public static void main(String[] args)
{
Student student=new Student();
student.setName(“小明”);
student.setAge(18);
student.setSchoolName(“西开”);
System.out.println(“学校:”+student.getSchoolName() +" 姓名:"+student.getName()+" 年龄:"+student.getAge());
}
}

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页