内部类 Object类 final关键字 多态

来源:互联网 发布:安卓防沉迷软件 编辑:程序博客网 时间:2024/05/20 23:05

继承两种方式:
Has—a: 类中有另一个类的应用
Is—a:extends
多态
1. 基本数据类型:自动转换 强制转换
2. 引用数据类型:向上转型向下转型(必须先向上转型)
A. 向上转型:子类的地址赋值给父类
注意:父类只能使用自己类中的方法,不能使用子类中的方法。如果子类重写了父类方法,则父类调用的是子类重写后的方法。
好处:
1. 扩大参数、属性范围
2. 若父类是一接口,通过这种方法获得自身对象。
B. 向下转型: 先向上转型后才能向下转型。
错误:Student p=newPerson ():
//具体被调用的方法
Publicvoid play(Person p): Person是一个接口或者抽象类
具体调用流程:
Person p=new Studen(); //向上转型
Play(p);
//具体play方法
public void play(Person p)
{
//此处需要调用student中的方法,必须向下转型
Students=(Student)p;
p.work();
}
Obj instanceof Class:obj是否是class类的对象
Final关键字
1. 修饰属性—–》常量
2. 修饰方法—–》最终方法,不能被子类重写 但可以被子类调用
3. 修饰类———》最终类,不能被继承。
修饰符+访问修饰符:
修饰符:abstract final static
访问修饰符:private public protected default
普通类:
A. 访问修饰符:public 默认
B. 修饰符:abstract ,fina
属性:
访问修饰符:4中
修饰符:static、final
方法:
访问修饰符:4种
修饰符:abstract final static
接口:
访问修饰符:public 默认(不写)
接口中方法的创建:
访问修饰符、修饰符二者全都出现或者全部不出现或者二者出现其一
Object类:
1. hashcode():把对象的地址转换成哈希吗值(整形值)
2. toString():打印对象时的地址的字符串。一般子类都要重写此方法。
3. getClass():得到运行时类
4. equals():即比较地址也比较内容,在子类中需要重写。
5. clone():创建返回对象副本
6. finalize():垃圾回收
内部类:顾名思义,在一个类的内部有定义了一个类。
种类:成员内部类,静态内部类,局部内部类,匿名内部类。
A. 成员内部类:
类之内方法之外定义的内部类。可以将其理解为一种成员,故其访问修饰符是4种。
a.获取内部类:
1. 外部类外部类对象=new 外部类;
2. 外部类.内部类 内部类对象=外部类对象.new 内部类;
Person.Heart heart=person.new Heart();
b.获取匿名内部类
1.在外部类中定义一个方法getInstance()返回内部类实例
2.直接使用外部类实例去调用getInstance得到内部类实例
Person.Heart heart1=person1.getInstance()
注意:同名属性使用实例:
System.out.println(“局部变量name:”+name);
System.out.println(“内部类属性:”+this.name);
System.out.println(“外部类属性:”+Person.this.name);
//Person.this:外部类对象
B. 静态内部类:
使用static修饰的内部类
注意:
静态内部类不能使用非静态的外部属性和方法
创建对象方法:不依赖外部类
1. Person.Heart heart1=new Person.Heart () //直接new
2.也可以通过定义getInstance的形式创建。
C. 局部内部类:
定义在方法中的内部类。
注意:
1. 可以使用外部类的属性和方法
2. 如果要使用方法中的局部变量,则该变量必须是final 因为内部类不能在使用完外部类的变量后将其销毁。

0 0
原创粉丝点击