【Java入门】继承

类的继承

父母结合,生下了孩子,孩子继承了父亲的的基因,因为孩子的会和父母长得比较像,还表现出差不多的行为,这就是继承.

父类的所有成员(除去构造函数、私有成员)都会被继承

通过extends关键字继承 被继承的我们称为父类,继承的我们称为子类.

在Java中,并不支持多继承,只允许单继承,也就是子类始终只有一个直接的父类.

Class SonClass extends FatherClass

{

//即使什么都不写,此时子类也已经拥有了一些成员,这是从父类继承来的.

}

一.1重写方法

public class Father {
private int age;
private String name;
private boolean sex;

public void eatFood() {
System.out.println("eatFood");
}

public static void working() {
System.out.println("father working");
}
}

子类可以自己添加额外的成员

public class Son extends Father {
public static void working() {
System.out.println("son working");
}
}

子类可以重写或者是隐藏父类的成员

public class Son extends Father {

//重写父类的函数
@Override
public void eatFood() {
System.out.println("Son eatFood");
}

//覆盖父类的函数
public static void working() {
System.out.println("son working");
}
子类自己的函数
public void play() {
System.out.println("play");
}
}

隐藏成员针对的是父类的静态成员

实例化子类生成一个对象

将子类对象赋值给父类

调用eatFood方法,输出表明该方法被覆盖,即使赋值给父类变量也是输出子类重写的内容

调用working方法,输出表明该方法被隐藏,此时又显露出来

一.2Super

可以通过super关键字访问父类的成员

super.xxx 调用父类的成员xxx super() 调用父类的构造器

super.getName()

通过this关键字访问本对象成员

this.xx 调用本类在外部的实例的成员

this.getName();

xxx this() 调用自己的另一个构造器(注意必须放在子类构造器的第一句)

public Son(String name, int age, boolean sex) {
super(name, age, sex); 访问构造器必须放在第一句
super.setName(super.getName() + "son");
}

一.3Object所有类的父类 equals hashcode tostring

所有类都继承自object类,也就是说object是所有类的父类

Equals、hashcode、toString是object类的函数,当然,所有子类也会拥有这些函数

Equals 比较函数 默认为比较两个对象是否为同一个对象,子类可以重写此函数来改变比较的方式 比如String就可以通过equals方法比较是否为同一字符串

@Override
public boolean equals(Object obj) {
return hashCode() == obj.hashCode();
}

Hashcode 哈希码 通过一定算法计算哈希代码,在同类的对象中哈希码唯一 String就是根据字符串生成哈希码,再通过比较哈希码的比较结果判断是否为同一字符串

@Override
public int hashCode() {
return super.hashCode();
}

ToString 转换为字符串 可以重写 例如说整数的包装类转换为字符串就是对应的数字

@Override
public String toString() {
return getClass().toString() + LocalDateTime.now();
}

第二章多态

父类变量可以接受子类的引用

这样调用父类与子类同一个函数时,却表现出了不同的行为,这种现象称之为多态

//同一父类下的子类,调用相同的方法,却表现出了不同的行为。这就是类的多态。
//比如同样是打印机(继承自同一父类),有的打印机打印照片时,有的是黑白色的,有的是彩色。调用相同的函数却表现出了不同的行为,这就是多态

posted @ 2020-10-08 16:32  JustonTao  阅读(60)  评论(0)    收藏  举报