欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java的三大特征之继承

程序员文章站 2022-04-21 20:52:07
继承的概述继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似。继承可以理解为一个类从另一个类获取方法和属性的过程。如果类B继承于类A,那么B就拥有A的方法和属性。继承使用 extends 关键字。例子:people类与teacher类的继承关系class People{ String name; int age; int height; void say(){ System.out.print...

继承的概述

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

继承可以理解为一个类从另一个类获取方法和属性的过程。如果类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());
}
}

本文地址:https://blog.csdn.net/qq_45157942/article/details/110211558

相关标签: java