小白学习Java第八课封装和多态

封装:设计程序时追求“高内聚,低耦合”,就是操作细节自己完成不允许外部干涉,低耦合是仅暴露少量的方法给外部使用,尽量方便外部调用。
封装的优点:1、提高代码的安全性2、提高代码的复用性3、高内聚,低耦合
相关访问控制符:
1、private表示私有,只有自己类能访问
2、default表示没有修饰符修饰,只有同一个包的包装类能访问
3、protected表示可以被同一个包的类以及其他包的子类访问
4、public表示可以被该项目的所有类访问
相关代码:

public class Test1 {
    public static void main(String[] args) {
        People p=new People();
       // p.id;不可用
    }
}
class People{
    private int id;
    void pri(){
        System.out.println(id);
    }
}
class student extends People{
    void pri1(){
       // System.out.println(id);虽然继承但是不可用,私有类只能自己用
    }
}

一般在用的时候,类的属性一般用private访问权限,提供相应的get/set 方法来访问相关属性,这些方法通常是public修饰,以提供对属性的赋值与读取操作,如果只用于本类的方法可以用private修饰,希望其它类调用的方法用public修饰。

kage Sodifficult;

public class testa {
    private int id;
    private String name;

    public void setId(int id) {
        if(id>=100&&id<=1000){
            this.id=id;
        }else{
            System.out.println("不符合输入条件");
        }
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public String getName() {
        return name;
    }
}

package Sodifficult;

public class testa1 {
    public static void main(String[] args) {
        testa w=new testa();
        w.setId(1234);
    }
}

在这里插入图片描述
多态
多态指的是同一个方法调用,由于对象不同可能会有不同的行为。现实生活中,同一方法中,具体实现完全不同。多态是方法的多态,不是属性的多态。
而多态存在有三个必要条件:继承,方法重写,父类引用指向子类对象。
父类引用指向子类对象后,用父类引用调用子类重写的方法。
关于向上转型,是指父类引用指向子类对象,属于自动类型转换,向上转型后父类引用变量只能调用它编译类型的方法,不能调用它运行时类型的方法,这时我们需要进行类型的强制转换,也可以称为向下转型。

代码如下:

public class Testp {
    public static void main(String[] args) {
        Animal aa=new Animal();
        animalsay(aa);
        Dog dd=new Dog();//Animal dd=new Dog();自动向上转型
        animalsay(dd);
        /*
        Dog dd=(Dog)dd;//强制向上转型
        如果想在其中使用狗独有的方法,则需要强制向上转型,因为在上个注释将狗转为动物
         */
    }
    static void animalsay(Animal aa){
        aa.say();
    }//运用多态可以调用子类重写的方法
}
class Animal{
    public void say(){
        System.out.println("叫一声");
    }
}
class Dog extends Animal{
    public void say(){
        System.out.println("哈士奇");
    }
}
class Cat extends Animal{
    public void say(){
        System.out.println("英国短毛猫");
    }
}

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值