封装,继承,多态,内部类

本文详细解读了Java中的封装、继承和多态概念,包括私有属性的保护、单一继承的优势、子类扩展父类功能、多态的实现方式以及内部类(成员和局部)的特性。通过实例演示,展示了如何利用这些机制提升代码的安全性和复用性。
摘要由CSDN通过智能技术生成

封装(private):把对象的属性私有化

private可以修饰属性,方法,被私有化的成员只能在本类中访问

好处:

  1. 提高安全性
  2. 提高重用性

继承(extend)

特点:

  1. 使用extends关键字来表示继承关系
  2. 相当于子类把父类的功能复制了一份
  3. Java只支持单继承
  4. 继承可以传递
  5. 父类的私有成员由于私有限制访问,所以子类不能使用父类的私有资源
  6. 继承多用于功能的修改,子类可以在拥有父类功能的同时,进行功能拓展
  7. 像是is a的关系

多态(继承+重写)

父类引用指向子类对象(子类对象的地址值交给父类类型的引用变量来保存)

编译看左边,运行看右边

多态中成员变量使用的是父类的,方法的定义使用父类,实现(方法体)使用的是子类的。

多态中父子类都有静态方法,不是重写的现象,所以调用的还是父类的功能

内部类

内部类有:成员内部类和局部内部类

成员内部类在类里方法外,局部内部类在方法里

成员内部类

成员内部类的格式:class Animal{

                   class Cat{}

}

特点:

1) 内部类可以直接访问外部类中的成员,包括私有成员
2) 外部类要访问内部类的成员,必须要建立内部类的对象
3) 在成员位置的内部类是成员内部类
4) 在局部位置的内部类是局部内部类

class Outer{
    String name;
    private int age;
    public void find(){
        System.out.println("我是外部类的find方法");
    }
    class Inner{
        int sum =10;
        public void delete(){
            System.out.println("我是成员内部类的delete方法");
        }
    }
}

new 外部类.方法名()--->匿名对象            只能够用一次调用方法

“匿名对象”就是没有名字的对象,匿名对象只能够使用一次

创建内部类对象 :外部类名.内部类名 对象名=new 外部类名().new 内部类名()

Outer.Inner io=new Outer().new Inner();

内部类可以使用外部类的资源,私有资源也可以

外部类无法直接使用内部类资源,外部类想使用类部资源,需要在外部类中的方法中创建内部类的对象,通过内部类对象调用内部类的资源

来回调用会出现  StackOverFlowException 栈溢出异常

被private修饰

格式:class Animal{

                 private  class Cat{}

}

成员内部类被Private修饰以后,无法被外界直接创建创建对象使用,在外部类方法中创建对象,调用它的方法
所以可以创建外部类对象,通过外部类对象间接访问内部类的资源

被static修饰

格式:class Animal{

                 static  class Cat{}

}

代码样式

 public static void main(String[] args) {
        Outer2.Inter2 io2=new Outer2.Inter2();
        io2.show();
        new Outer2.Inter2().show();//匿名对象创建内部类,并调用内部类方法
        Outer2.Inter2.fly();//链式加载
    }
}
class Outer2{
    static class Inter2{
        public void show(){
            System.out.println("我是静态内部类的普通方法");
        }
        public static void fly(){
            System.out.println("我是静态内部类的静态方法");
        }
    }
}

外部类作为内部类的特殊成员,需要设置成静态,才能在静态内部类中添加静态方法

静态资源访问时不需要创建对象,可以通过类名直接访问
访问静态类中的静态资源可以通过”. . . ”链式加载的方式访问

局部内部类

格式:class Animal{

                   public void eat(){

                               class Cat{}

}}

在外部类的方法中创建内部类对象进行调用方法后,内部类的功能才会被调用

匿名内部类

定义:new 类名(){方法实现}.方法名;

new Iuter4()创建匿名对象
{方法实现}  接口的实现类
.save()表示匿名对象调用实现后的方法

匿名内部类属于局部内部类,而且是没有名字的局部内部类,通常和匿名对象一起使用

匿名内部类通常与匿名对象结合一起使用,匿名对象只能使用一次,一次只能调用一个方法

抽象类

普通类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值