/**
* 继承
* supper
* 方法重载
* 方法重写
* Object 类
*/
1.继承(extends)
子类拥有父类的所有非私有属性与方法(不包括构造方法)
//父类
public class Animal {
private String name;
public int age;
public void eat() {
System.out.println("吃东西");
}
}
//子类
public class Dog extends Animal{
}
public class Test {
public static void main(String[] args) {
//创建 Dog 类的实例(里面什么属性方法都没写)
Dog d = new Dog();
d.eat();
int age = d.age;
//Dog 类为什么会有 Animal 类的方法与属性?
//因为它继承(extends)于 Animal 类,所以拥有父类(Animal)的所有非私有属性与方法(不包含构造方法)
}
问题:为什么要继承?
代码复用,定义一个方法或属性,重复使用
2. supper
2.1 super()
调用父类的构造方法,不写也默认存在,只能出现在子类的构造方法第一行
如果父类中只有一个有参的构造方法,那么子类需要把构造方法写出来并给父类的构造方法传参
2.2 super.方法名
调用父类的方法
3.方法重载(Overload)
一个类中,多个方法重名,但参数列表不同(参数个数、参数类型、参数顺序不同,与返回值无关)
public void getMessage() {
}
// public int getMessage() {
// return 1; //与返回值没有关系
// }
public void getMessage(String name) {
}
public void getMessage(String name, int age) {
}
public void getMessage(int age, String name) {
}
问题:为什么要重载?
不用过多的取方法名
4.方法重写/覆盖(Override)
子类当中有一个方法与父类中方法一样(返回值类型,参数列表(参数个数,参数类型,参数顺序)一样)
子类的修饰符要 >= 父类的修饰符访问权限
//父类
public class Animal {
protected void eat() {
System.out.println("吃东西");
}
}
//子类
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("吃猫粮");
}
}
//测试类
public class Test {
public static void main(String[] args) {
Cat c = new Cat();
//调用的是子类重写之后的 eat() 方法,而不是父类的 eat() 方法
c.eat(); //吃猫粮
}
}
问题:为什么要重写?
因为父类的方法没有满足子类的要求
5.Object类(所有类的父类)
public class Test extends Object{
// Object 类是所有类的父类
//垃圾回收方法
@Override
protected void finalize() throws Throwable {
super.finalize();
}
//默认打印当前对象在内存中的地址
@Override
public String toString() {
return super.toString();
}
//克隆一个相同的对象
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
//打印当前对象的哈希码
@Override
public int hashCode() {
return super.hashCode();
}
//对比两个对象是不是一个对象
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
//........
}
Java笔记(继承、supper、方法重载、方法重写、Object 类)
最新推荐文章于 2024-10-12 22:35:37 发布
本文介绍了Java中的面向对象特性,包括继承(子类继承父类属性和方法)、super关键字的使用(调用父类构造器和方法)、方法重载(同一类中多个同名但参数不同的方法)以及方法重写(子类覆盖父类方法)。通过这些概念,可以实现代码复用、接口定制和多态性。同时,还提及了Object类作为所有类的基类,包含的一些基本方法如toString()、hashCode()等。
摘要由CSDN通过智能技术生成