三大特性: 封装: ---概念:隐藏对象的属性和细节,仅对外提供公共的访问接口。 ---好处:将变化隔离;方便使用;提高了代码的复用性和重现性。 ---封装原则:将不需要对外提供的内容都隐藏起来,仅提供公共的方法。 继承: ---概念:指这样一种能力,可以使用现有类的所有功能,且在无需重新编写原来的类情况下,对这些功能进行拓展。继承的类成为“子类”或“派生类”,被继承的类,成为“父类”或“基类”。 ---好处:提高了代码的复用性;让类与类之间产生了关系,且是多态的前提。 ---特点:java支持多重继承,但只支持单继承,即是说一个子类只允许有一个父类。但Java通过多实现的方法弥补了单继承所带来的缺陷。 多态: ---概念:父类引用或接口,指向了自己的子类对象。 ---好处:提高了程序的拓展性。 ---弊端:虽然提高了拓展性,但只能只用父类中已有的方法,而不能使用子类特有的方法。 ---前提:必须要有类的继承或接口的实现关系。通常会有覆盖操作。 一封装:★★★★★ 单例设计模式:★★★★★(必问的) /* 饿汉式 - 因为要保证只有一份对象,对构造函数私有。
- 定一个公有的返回对象的方法,同时因为不能创建对象,
因此方法使用静态方法。 class Single1() { private Single1(){} Single1 s = new Single1(); public Single1 getInstance() { return s; } } 懒汉式 只有当对外提供的方法被访问时,才进行初始化。 目的:保证对象在内存中的唯一性。 - 禁止访问构造函数;
- 在有需要的情况下,才创建对象;
- 对外提供访问接口。
注意: - 因为不能创建对象,所以对外提供的访问函数,只能是静态的。
- 静态函数只能访问静态属性,因此创建的对象也必须是静态的。
- 因为s是类类型变量,因此s也最好是私有化。
- 懒汉式牵涉到多线程安全问题,注意进行2次判断(第二次上锁)。
*/ class Single2 { private Single2(){} private static Single2 s=null; public Single2 getInstance() { if(s==null) { Synchronized(Single2.Class) //上锁,且双重判断 { if(s==null) s=new Single2(); } } return s; } } 5、单例设计模式为什么要这样写?延迟加载的单例属于哪种设计模式? 6、单例和枚举的区别(2) a) 枚举单例简洁。public enum EasySingleton { INSTANCE ; } b) 枚举单例可以解决序列化readObject()带来的创建多个对象的问题。 private Object readResolve (){ return INSTANCE ;} c) 枚举单例是线程安全的 7,单例的设计模式作用,懒汉式和饿汉式的区别; 8,银行系统哪里用到了单例,问银行卡上有账号是不是单例; 二继承★★★★★ (4h) 1、有这样三个类,Person,Student.GoodStudent。其中Student继承了Person,GoodStudent继承了Student,三个类中只有默认的构造函数,用什么样的方法证明在创建Student类的对象的时候是否调用了Person的构造函数,在创建GoodStudent类的对象的时候是否调用了Student构造函数?如果在创建Student对象的时候没有调用Person的构造函数,那么采用什么样的手段可以调用父类的构造函数? 2,类的加载顺序 简单来说:静态属性初始化(默认,显示)构造初始化(构造代码块;构造函数). 具体来说:.class静态分配堆内存属性默认初始化属性显示初始化构造代码块初始化构造函数初始化栈内存指向对内存。 3,枚举是否可以继承类(2) 枚举都继承自java.lang.Enum类,java不支持多继承,但可以实现接口。 4、假如我们在开发一个系统时需要对员工进行建模,员工包含 3 个属性:姓名、工号以及工资。经理也是员工,除了含有员工的属性外,另为还有一个奖金属性。请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。examTest/Test2 注意: a) 类的首字母是大写滴; b) 要直接访问父类的构造函数,在本类的构造函数中,使用super(参数..),进行指定构造函数的访问。 c) 注意最好用要加入setName()等函数 5、 声明类Person,包含2个成员变量:name、age。定义函数sayHello(),调用时输出:我叫***,今年***岁了。声明类Chinese继承Person。 1)建立Person类,满足上述要求。 2) 建立Chinese类,调用时,输出上诉要求 3) 注意,如果类写了构造函数,则不会自动加入空参数的构造函数 |