JAVA基础学习(2)

JAVA学习小结2

本周学习内容有:

  1. 多态
  2. 抽象类
  3. 接口
  4. 传参
  5. 权限修饰符
  6. 内部类

多态

多态就是某一个事物,在不同时刻表现出来的不同状态。
猫可以是一只猫,同时也是一只动物
Cat c=new Cat();
Animal a=new Cat();
多态其实就是向上转型
多态的前提:
a:要有继承关系。
b:要有方法重写。 其实没有也是可以的,但是如果没有这个 就没有意义。
c:要有父类引用指向子类对象。
我们通过多态去访问成员变量,访问的是父类的成员变量
(编译看左边,运行也看左边)
我们通过多态访问方法,访问的是子类的重写方法
(编译看左边,运行看右边)
我们通过多态访问静态方法。
(编译看左边,运行也看左边)
弊端:*
不能访问子类独有的方法
如果要使用子类的独有方法,可以向下转型:
Person为父类,Teacher,Student为子类:

Person p=new Student();
Student s=(Student)p;
s.talklove();//talklove为学生类的特有方法

注意:父类可以向下转型为子类,子类之间不能相互转型```
ClassCastException为报错:类型转换异常

抽象类

在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。
抽象类由关键字abstract修饰,abstract可修饰方法和类。
抽象类的成员变量既可以是变量,也可以是常量。也有构造方法,用于子类访问父类数据的初始化。,其成员方法可以是抽象的也可以不是。
抽象方法 :强制要求子类做的事情。
非抽象方法 :子类继承的事情,提高代码复用性。

public abstract class Animal {
    //
    //abstract 抽象的 可以修饰方法,和类
    int num=1;
    public static final boolean B=false;


    public Animal() {
        System.out.println("抽象类的构造方法执行了");
    }

    public abstract void eat();
    public abstract void sleep();


    public void show(){

        System.out.println("Animal中的show方法");
    }
}

接口

为了体现事物功能的扩展性,Java中就提供了接口来定义这些额外功能,并不给出具体实现,将来哪些猫狗需要被培训,只需要这部分猫狗把这些额外功能实现即可
接口:inference,与class同级,接口内方法存在默认修饰符public abstract
implements 实现接口
接口支持多继承,类与接口间也可以实现多实现
接口中的方法都是抽象方法,除非加关键字default
接口里没有构造方法
接口中的成员变量全是公共的静态啊常量

public interface MyIntereface {
    //接口中是用来定义一些扩展功能,而且接口里面不能定义非抽象方法,只能定义定义抽象方法
    public abstract void fire();
   // public void show(){}; 报错,接口中不能定义非抽象方法
       void math(); //接口的方法前面存在默认的修饰符  public abstract 你可以省略不写

}
public class Cat extends Animal implements MyIntereface{
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }

    @Override
    public void sleep() {
        System.out.println("猫白天睡觉");
    }


    public void catchMouse() {
        System.out.println("猫抓老鼠");
    }


    @Override
    public void fire() {
        System.out.println("猫经过不断的学习会钻火圈了");
    }

    @Override
    public void math() {
        System.out.println("猫经过练习,会做算术了");
    }
}

传参

传参内容较为简单,可以体现在之前学过的内容之中,需要说的是,如果形参为一个抽象类,那么应该传一个子类对象

权限修饰符

private(私有的) ,
默认缺省
protected(受保护的) ,
public(公共的)
(https://img-blog.csdnimg.cn/20181219183043593.PNG)

内部类

把类定义在其他类的内部,这个类就被称为内部类。在类A中定义了一个类B,类B就是内部类。内部类可以直接访问外部类的成员,包括私有。:外部类要访问内部类的成员,必须创建对象。
按照内部类位置分类
成员位置:在成员位置定义的类,被称为成员内部类。
局部位置:在局部位置定义的类,被称为局部内部类。
成员内部类的修饰符:
private 为了保证数据的安全性
static 为了方便访问数据
注意事项:
a:静态内部类访问的外部类数据必须用静态修饰。
b: 成员方法可以是静态的也可以是非静态的
B:成员内部类被静态修饰后的访问方式是:
格式: 外部类名.内部类名 对象名 = new 外部类名.内部类名();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值