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
上一篇: 国内首个“区块链新能源”专利获授权