海阔天空

当前时间为:
欢迎大家来到海阔天空https://www.9713job.com,广告合作以及淘宝商家推广请微信联系15357240395

2020java教程:面向对象之三个修饰符 Abstract

未分类
2020-08-11 20:28:52
1822677238@qq.com

手机扫码查看

2020java教程:面向对象之三个修饰符 Abstract

面向对象之三个修饰符 Abstract

什么是抽象?
似是而非的,像却又不是;具备某种对象的特征,但不完整

生活中的抽象
比如在百度搜索动物,搜索结果都是 “动物”的子类对象,而没有 “动物” 对象

不该被创建的对象

public class demos{
public static void main(String[] args) {
Animal a=new Animal();
/*
Animal 仅是一种会吃会睡的对象
再无其他行为,不够具体,不够完整
*/
}
}
class Animal{
String name;
int age;
public Animal(){}
public void eat(){
System.out.println(“动物再吃…”);
}
public void sleep(){
System.out.println(“动物再睡…”);
}
}
/*
程序是用来模拟现实世界、解决现实问题的,
现实世界中存在的都是“动物”具体的子类对象,
并不存在“动物”对象,
所以,Animal 不应该被独立创建成对象。
*/

如何限制这种对象的创建?

抽象类
应用:Abstract修饰类,此类不能new对象

public class demoss{
public static void main(String[] args) {
new Animal();//Animal是抽象的,无法实例化
}
}
abstract class Animal{
/*
被abstract修饰的类,称为 抽象类。
抽象类意为不完整的类、不够具体的类,
抽象类对象无法独立存在,即 不能 new 对象
*/
}
class Dog extends Animal{

}

抽象类的作用

public class demoss{
public static void main(String[] args) {
Animal d=new Dog();
/*
作用:
1.可被子类继承,提供共性属性和方法。
2.可声明为引用,强制使用多态。
*/
d.eat();
/*
经验:
抽象父类,可作为子类的组成部分,
依附于子类对象存在,
由 父类共性+ 子类独有组成完整的子类对象。
*/
}
}
abstract class Animal{
public void eat(){
System.out.println(“动物再吃…”);
}
public void sleep(){
System.out.println(“动物在睡…”);
}
}
class Dog extends Animal{
public void eat(){
System.out.println(“子类动物再吃…”);
}
public void sleep(){
System.out.println(“子类动物在睡…”);
}
}


abstract抽象方法

abstract class Animal{
    //被 abstract 修饰的方法为 抽象方法
    //只有方法的声明,没有方法体,以;分号结尾
    public abstract void eat();
}
class Dog extends Animal{
    //如果子类继承父类,则必须覆盖父类的方法,否则子类还是抽象类
    public void eat(){
        System.out.println("子类覆盖父类的吃方法");
    }
}
public class demos{
    public static void main(String[] args) {
        Animal d=new Dog();
        d.eat();
    }
}

总结:
1.abstract修饰类:不能new对象,但可以声明引用
2.abstract修饰方法:只有方法声明,没有方法实现
3.抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类
4.子类继承抽象类后,必须覆盖父类所有的抽象方法,否则子类还是抽象类

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注