Java面向对象编程_抽象类与接口——抽象类的实现(正常模式和非正常模式)

1. 抽象类的实现(正常模式)

正常开发中的标准操作

package day07;
/*
 *  抽象类的实现:
 *      1. 所有的抽象类必须有子类
 *      2. 抽象类的子类必须覆写抽象类的所有抽象方法(子类不能是抽象类)
 *      3. 抽象类的对象通过对象的多态性的子类去实例化的
 *      4. private和abstract不能同时使用
 *
 *  抽象方法的使用规则:
 *      1. 类必须是抽象类,声明前加上abstract
 *      2. 抽象方法在声明前也要加上关键字abstract
 *      3. 抽象方法只声明不实现(即没有方法体)
 */

// 正常模式
public class Test{

    public static void main(String[] args){
        Person per = new Student(); // 实例化子类,向上转型
        per.getPersonInfo(); // 被子类所覆写的抽象方法
    }
}

// 抽象类
abstract class Person {

    private String name;

    public String getName(){
        return this.name;
    }

    public void setName(String name){
        this.name = name;
    }

    public abstract void getPersonInfo(); // 抽象方法
}

// 子类

class Student extends Person{
    public void getPersonInfo(){
        System.out.println("I am a Student");
    }
}

2. 抽象类的实现(非正常模式)

封装具体子类,开发时不首选

package day07;
/*
 *  抽象类的实现:
 *      1. 所有的抽象类必须有子类
 *      2. 抽象类的子类必须覆写抽象类的所有抽象方法(子类不能是抽象类)
 *      3. 抽象类的对象通过对象的多态性的子类去实例化的
 *      4. private和abstract不能同时使用
 *
 *  抽象方法的使用规则:
 *      1. 类必须是抽象类,声明前加上abstract
 *      2. 抽象方法在声明前也要加上关键字abstract
 *      3. 抽象方法只声明不实现(即没有方法体)
 */

public class Test{

    public static void main(String[] args){
        Person per = Person.getInstance() ;
        per.getPersonInfo(); // 被子类所覆写的抽象方法
    }
}

// 抽象类
abstract class Person {

    private String name;

    public String getName(){
        return this.name;
    }

    public void setName(String name){
        this.name = name;
    }

    public abstract void getPersonInfo(); // 抽象方法
    
    public static Person getInstance() {  // 取得A类的对象

        class Student extends Person{
            public void getPersonInfo(){
                System.out.println("I am a Student");
            }
        }
        return new Student();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值