java继承的特征_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());

}

}

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值