【无标题】

**

多态:Animal a=new Cat();

**
这样a对象就可以访问到父类Animal中的成员变量
访问子类中被重写的方法,子类中特有的方法访问不到(可以通过向下转型访问子类对象),也可以返回父类中没被子类重写的方法
成员变量:编译看左边,执行看左边(返回父类中的成员变量)
成员方法:编译看左边,执行看右边(调用子类重写后的方法)

多态可以通过父类对象访问子类重写的父类方法(不能访问到具体的子类特有的方法),以及父类成员变量

但有一个问题就是它访问不到子类成员变量?

解决办法:
解决方法
采用get()/set()

Java
public class Person {
    private String name = "person";

    public String getName() {
        return name;
    }

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

public class Dad extends Person {
    private String name = "Dad";

    public String getName() {
        return name;
    }

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

Person dad = new Dad();
System.out.println(dad.getName());
得到结果:

Dad
由于dad.getName()执行的是子类中重载父类的getName(),因此返回的也是子类中定义的name。这种方法最为推荐,但用起来也繁琐一些。因为这种方法同时维护了两个相同的成员变量,因此使用起来也得小心一些。

向上向下转型

在这里插入图片描述

抽象类

关键字:abstract

抽象类的特点

在这里插入图片描述

public  abstract class abstractProject {
    public abstract void eat();
}

若有抽象方法必须是在抽象类
抽象类不可以直接创建对象,要通过多态的形式
创建一个子类继承这个抽象类
其中这个子类要么也是抽象类,要么就必须重写他的父类抽象类的抽象方法
然后
抽象类类名 a=new 子类();

接口

在这里插入图片描述
接口本来就是一种抽象类

接口的成员特点

在这里插入图片描述

Math常用方法

在这里插入图片描述

集合

在这里插入图片描述
接口不可直接创建对象,通过实现类来创建对象
比如:List list=new ArrayList();

List集合

List是一个接口,它继承了Collection,所以Collection的所有方法都可使用
特点:有序可重复

List特有的方法

在这里插入图片描述

集合迭代器

public class Fu {
    public static void main(String[] args) {
        Collection<String> c=new ArrayList<>();
        c.add("hello");
        c.add("world");
        c.add("hhello");
        System.out.println(c);
        //迭代器
        Iterator<String> it=c.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
    }

列表迭代器

listIterator
与集合迭代器用法相同,当list需要遍历时,若用Iterator会引起并发错误
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值