Java包+面向对象(一)

可以导入一个具体的类:

import java.util.Arrays(正确的)

不能导入一个具体的包:

import java.util(错误的)

导入这个包下面的所有的类(*为通配符):

java处理的时候,需要谁才会拿谁;C里面是把所有的类都拿进来

import java.util.*;

静态导入:

包名必须是小写字母

当成员变量不加任何的访问修饰限定词的时候,默认包访问权限,即只能同一个包里面的才能访问。包访问权限没有关键字。

面向对象的基本特征:

封装:不必要公开的数据成员,使用private关键字(安全性)

继承:子类/派生类 继承自 父类/基类/超类

①java中一个子类只能继承自一个父类

②子类构造的同时,要帮助父类构造

super();  //调用父类的构造方法
super.func();  
super.data;

super()不能出现在静态方法中,是父类对象的引用,依赖对象;static不依赖对象

同名的情况下,子类优先访问自己的对象,如果指定了,就访问指定的。

private:类内部可以访问
默认(包访问权限):类内部可以访问,同一个包的类可以访问
protected:类内部可以访问,同一个包的类可以访问,不同包的子类可以访问
public:都可以访问

一个类被final修饰,表示不可以被继承


1.向上转型:父类引用子类实例,子类对象转成父类对象

Animal animal=new Dog("haha",3);

①直接赋值

②方法传参

③方法返回

2.向下转型:不是很安全,父类对象转成子类对象

前提是animal本身是dog

Animal animal= new Dog("haha",2);
Dog dog=(Dog)animal;

//下面这种写法更安全
Animal animal= new Bird("haha",2);
if(animal instance of Bird){
     Bird bird=(Bird)animal;
}

1.运行时多态—动态绑定(重写实现):实现子类的方法

编译的时候不能够确定到底调用谁(父类还是子类)的方法,运行的时候才知道,是子类对父类方法的覆盖实现多态

方法名,返回值,参数类型和个数完全相同

前提:①父类引用子类对象  ②通过父类引用调用父类和子类 同名的覆盖方法(即重写)

重写:①方法名相同 ②参数列表相同(个数+类型) ③返回值相同  ④只发生在父子类中

不能重写的类型:

①静态方法,被static修饰

②子类的访问修饰限定,要大于等于父类的访问修饰限定(比如不能是private)

③private不能重写

④被final修饰的方法不能重写

重写的返回值可以不同:发生了协变类型(父类和子类的返回类型不一样)但最好相同,也算重写

父类引用只能引用父类自己的成员,不能访问子类的成员。

2.编译时多态—静态绑定(重载实现):

方法名相同,参数的类型和个数不同,是在一个类中

根据给的参数推导出调用的是哪个函数,编译的时候就知道调用的哪个函数了,利用重载实现多态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值