JAVA SE 封装、继承、多态

封装(Encapsulation):

是一种将抽象性函式接口的实现细节包装、隐藏起来的方法。

 

特点

  • 减少耦合
  • 类的内部结构可以自由修改
  • 隐藏信息,实现细节

实现步骤

1、修改属性的可见性,限制对属性的访问

2、对属性提供对外公共方法的访问,创建一对赋值取值的方法,访问私有属性

eg.:

public class Person{
    private String name;
    private int age;

    public int getAge(){
        return age;
    }

    public String getName(){
        return name;
    }

    public void setAge(int _age){
        this.age = _age;
    }

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

 

继承(Inheritance

是子类继承父类的特征和方法,使子类具有父类的实例域和方法,使得子类具有父类相同的行为。

 

特性

  • 提高代码复用性
  • 子类可以对父类进行扩展
  • 单继承,只能继承一个父类
  • 提高了类之间的耦合性

关键字

  • super:引用当前对象的父类
  • this:指向自己的引用
  • final:声明类为不可继承的,最终类,或最终方法

eg.:

class Animal{

    public void eat(){
        System.out.println("动物具有吃的能力!")
    }
}

final class Cat extends Animal{}//最终类,不可继承

class Dog extends Animal{
    
    //最终方法,不可继承
    public final void eat(){
        System.out.println("狗是吃肉的!")
    }
}

多态(Polymorphism

同一个行为具有多个不同表现形式或形态的能力,就是同一个接口,使用不同实例而执行不同操作。

 

1、引用多态

  • 父类的引用可以指向本类的对象
  • 父类的引用可以指向子类的对象

2、方法多态

  • 创建本类对象时,调用本类的方法
  • 创建子类对象时,调用子类重写或继承的方法

实现方式

  • 重写
  • 接口
  • 抽象类和抽象方法

eg.:

public class Test{

    public static void main(String[] args){

        Animal obj1 = new Animal()://父类的引用指向本类对象
        Animal obj2 = new Dog();//父类的引用指向子类对象
        //Dog obj3 = new Animal();子类的引用不能指向父类的对象

        //调用本类方法
        obj1.eat(); //动物具有吃的能力!

        //调用子类重写方法
        obj2.eat(); //狗是吃肉的!
    }
}

 

 

引用类型转换

1、向上类型转换(隐式/自动类型转换):小类型转大类型型,无风险

2、向下类型转换(强制类型转换):大类型转小类型,有风险(丢失精度)

3、instanceof运算符,解决引用对象类型,避免类型装换的风险

eg.:

public class Test{

    public static void main(String[] args){
        Dog dog = new Dog();
        Animal animal = dog; //向上类型转换,自动转换

        Dog dog = (Dog)animal;//强制类型装换

        if(animal instanceof Cat){
            Cat cat = (Dog)animal;//类型不同,无法进行转换
        }else{
            System.out.println(”无法进行类型装换“);
        }
    }
}

 

参考资料:https://www.imooc.com/learn/124

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值