标签:java 使用 strong 数据 问题 sp on c 设计
继承
访问控制:
Public(公共):访问无限制。
Protected(保护):因继承而生,同包内可访问,不同包的当前类的子类可访问,不同包的不是该类的子类不访问。
friendly(默认):访问限于该包。
Private(私有):访问限于该类。
1、子类能从父类中继承什么,不能继承什么?
能继承:
(1)父类中的所有public成员(包括成员变量与成员方法)
(2)父类中的所有protected成员(包括成员变量与成员方法)
(2.1)当子父同包时,子类继承的protected成员,可以让同包其他类来访问,类似缺省
(2.2)当子父不同包时,子类继承的protected成员,不可以让同包其他类来访问,类似私有
(3)父类中的所有缺省成员(包括成员变量与成员方法),当子类与父类同包时可以继承,不同包不能继承
不能继承:
(1)父类中的所有private成员(包括成员变量与成员方法)
(2)异包父类中的所有缺省成员(包括成员变量与成员方法)
2、子类与父类的构造方法是什么关系(构造方法能否继承)?
(1).当产生子类对象时,先默认调用父类无参构造方法(除非有特殊指定),然后调用子类构造方法
(2).在子类构造方法中可以使用super()来指明调用父类某个构造方法,super必须是子类构造方法中第一个可执行语句,并不意味着只能调用父类的一个构造,因为子类中可写多个构造,多次super()。
(3).子类不能继承父类的构造方法,更不存在覆盖的问题。
3、子类从父类中继承的方法在子类中能否被改写?
可以改写,叫方法重写或方法覆盖。
方法重载:方法名相同,参数列表不同,返回值类型可以不同。
方法覆盖(方法重写):子类与父类之间的多态性,子类对父类的函数重新定义。子类中定义的某方法与父类有相同的名称和参数,称为重写(此时返回值类型必须相同,否则会报错)。1、如果方法被重写,新的方法会覆盖父类中原有的方法,可用super调用原有的方法。2、子类的访问修饰权限不能低于父类的。
多态:
(1)继承,(2)方法重写,(3)运型时根据实际创建的对象类型动态决定使用哪个方法。
向上转型:父类引用指向子类对象;向下转型:将父类的对象强制转换为子类的对象
抽象类:
1)关键字abstract定义; 实现:extends继承
2)抽象类:对一类类的抽象,一般包含抽象方法,使用abstract关键字来修饰
3)抽象类只能用来继承,不能直接产生抽象类对象,可以有构造方法(当某类共有常用)
4)一个类继承抽象类后,若不对抽象类中的抽象方法重写,则这个类仍是抽象类
5)抽象类中可以有非抽象方法,也可以没有任何方法;抽象类中若没有抽象方法,则不用重写
6)意义:将方法的设计与实现分离(接口也是,抽象的,都具有不唯一性)
接口
1)使用interface关键字来定义的一组抽象方法的总称。实现:implements 关键字
2)接口定义的属性为常量,相当于public static final
3)只有常量和抽象方法
4)可以有多个接口
note:(1)接口内的方法默认是抽象的public abstract,并且不可有普通方法;(2)类接入接口后必须重写方法或定义为抽象类
内部类
具有很好的分装性,内部类可以无限制的访问外部类的数据,包括私有属性和方法。并且可已被public、private、static等修饰。当一个类没有static修饰时,这个内部类就叫成员类。
成员内部类
静态内部类
匿名内部类
局部内部类
作用
1.内部类可以很好的实现隐藏。一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
2.内部类拥有外围类的所有元素的访问权限
3.可是实现多重继承
4.可以避免修改接口而实现同一个类中两种同名方法的调用。
标签:java 使用 strong 数据 问题 sp on c 设计
原文地址:http://www.cnblogs.com/vegg117/p/3935001.html