Java——抽象
不止Java
共 1645字,需浏览 4分钟
·
2021-07-03 15:39
![](https://filescdn.proginn.com/555fd37303133fa3d4f5fd2fecf07cb0/39a3087d65d17dd0350bf6264cfe4968.webp)
喜欢就关注我吧,订阅更多最新消息
目录
定义
抽象类的特点
抽象类和抽象方法必须使用
abstract
关键字修饰public abstract class 类名{}
public abstract void eat{}
抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。
抽象类不能实例化
实例化需参照多态的方式,通过子类对象实例化。抽象类的子类
要么重写抽象类中所有的抽象方法
要么是抽象类
/*
动物类(父类,抽象类)
*/
public abstract class Animal {
public abstract void eat();
public void sleep(){
System.out.println("睡觉");
}
}
/*
猫类(子类)
*/
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
/*
小狗类(子类,抽象类)
*/
public abstract class Dog extends Animal {
}
/*
测试类
*/
public class AnimalDemo {
public static void main(String[] args) {
//Animal a = new Animal();
Animal a = new Cat();
a.eat();
a.sleep();
}
}
抽象类的成员特点
成员变量(可以是变量或常量)
构造方法(不能实例化,用于子类访问父类数据的初始化)
成员方法
可以有抽象方法:限定子类必须完成某些动作;
也可以有非抽象方法:提高代码的复用性。
/*
动物类(父类,抽象类)
*/
public abstract class Animal {
private int age = 2;
private final String city = "HongKong";
public Animal() {
}
public void show() {
age = 3;
System.out.println(age);
//city = "HongKong";
System.out.println(city);
}
public abstract void eat();
}
/*
猫类(子类)
*/
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
/*
测试类
*/
public class AnimalDemo {
public static void main(String[] args) {
Animal a = new Cat();
a.eat();
a.show();
}
}
![](https://filescdn.proginn.com/5e6c9db4074247427244ec1be0d28b06/c62303963a5a5b2f835a0d3d56ba2ba0.webp)
评论