Java基础知识

Java面向对象的特点:封装,继承,多态

封装

特点:
1. 变量的属性私有化,提高变量的安全性;
2. 使方法或函数模块化,便于外部调用,使调用者不用知道实现方法,只用知道请求结果;

继承

优点:
1. 把相同的属性抽取出来,定义一个新的类,然后让对应的类去继承该类;
2. 单继承;
3. 子类拥有父类非private的属性和方法;
4. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展;
5. 子类可以重写父类方法;
缺点:
1. 继承是一种强耦合关系,父类变,子类就必须变;
2. 继承破坏了封装,对于父类而言,它的实现细节与子类都是透明的;

重写

特点:
1. 重写又叫覆盖,发生在继承关系下的子类中;
2. 子类重写父类方法不能缩小父类的访问权限但可以扩大;

重载

特点:
1. 方法名相同而参数列表不同;
2. 被重载的方法可以改变返回类型;
3. 被重载的方法可以改变访问修饰符;
4. 方法能够在同一个类中或者在一个子类中被重载;

类与类关系

依赖

特点:
1. 依赖简单的理解,就是一个类A中的方法使用到了另一个类B;
2. 这种关系具有偶然性、临时性、非常弱,但是B累的变化会影响到A;

关联

特点:
1. 关联体现的是两个类、或者类与接口之间语义级别的一种强依赖关系;
2. 这种关系比依赖更强,不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;
3. 在java中,关联关系一般使用成员变量来实现;

聚合

特点:
1. 聚合是关联关系的一种特例,他提现的是整体与部分、拥有的关系,即has-a的关系;

组合

特点:
1. 组合也是关联关系的一种特例,他体现的是一种contains-a的关系,着中关系比聚合更强,也称为强聚合;

多态

特点:
1. 多态,简而言之就是同一个行为具有多个不同表现形式或形态的能力;

重载式多态

特点:
1. 在编译时已经确定好了;
2. 重载既是相同而参数列表不同的一组方法就是重载,重载也是一种多态;

重写是多态

特点:
1. 多态通过动态绑定技术实现;
2. 这种多态通过函数的重写以及向上转型来实现;

向上转型

特点:
1. 子类引用对象转换为父类类型称为向上转型,通俗的说就是将子类对象转为父类对象,此父类对象可以是接口;
2. 减少重复代码,使代码变得简洁;
3. 提高系统扩展性;

向下转型

特点:
1. 向下转型是吧父对象转为子类对象;
2. 向下转型的前提是父类对象指向的是子类对象(也就是说,在向下转型之前,他得先向上转型)
3. 向下转型只能转型为本类对象;

抽象类与接口

抽象类和抽象方法

特点:
1. 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类;
2. 被abstract修饰的类,就做抽象类,抽象类中可以定义抽象方法,也可以定义普通方法。抽象类不可以被实例化,只有被实体类继承后,抽象类才会有作用;
3. 抽象方法:被abstract修饰的方法叫做抽象方法,抽象方法没有方法体,也就是说抽象方法没有具体的实现;
4. 抽象方法必须定义在抽象类中;
5. abstract void move(); 这就是一个抽象方法;
6. 抽象类就是用来被继承的,脱离了继承,抽象类就失去了价值;继承了抽象类的子类,需要重写抽象类中所有的抽象方法;
7. 抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可;
8. 抽象类的设计目的就是为了处理类似于Animal这种无法准确描述为一个对象的情况,所以不可以实例化;
9. 抽象类中可以定义抽象方法,抽象方法是没有方法体,必须被子类重写后该方法才能被正确调用;
10. 子类必须重写所以抽象方法;不都重写也可以,但是这样的话,子类必须是抽象类;
11. 一个类里只要有一个抽象方法,那么这个类必须定义为抽象类;
12. 抽象类中可以包含具体的方法,当然也可以不包含抽象方法;
13. abstract不能与final并列修饰一个类;abstract类就是为了让子类继承,而final类不能被继承;
14. abstract不能与private、static、final、或native并列修饰同一个方法;抽象方法必须被子类重写才能使用;

接口

特点:
1. java中的接口是一系列方法的声明,是一些方法的特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以再不同的地方被不同的类实现,而这些实现可以具有不同的行为;
2. 接口是一种比抽象类更加抽象的“类”;接口本身就不是类,因为抽象类中还可以定义普通方法,当是接口中只能写抽象方法;
3. 接口是用来建立类与类之间的协议,它所提供的只是一种形式,而没有具体的实现;接口中的所有方法默认都是public abstract;
4. 接口是抽象类的延伸,java保证数据安全是不能多重继承的,也就是说继承只能存在一个父类,但是接口不同,一个类可以同时实现多个接口,不管这些接口之间有没有关系,所有接口弥补了抽象类不能多重继承的缺陷,但是推荐继承和接口共同使用,因为这样既可以保证数据安全性又可以实现多重继承;
5. 接口中的所有方法访问权限只能被声明为public,其他编译出错;
6. 接口中可以定义变量,但是他会被强制变为不可变的常量,因为接口中的“成员变量”会自动变为public static final;可以通过类名直接访问;ImplementtClass.name;
7. 实现接口的抽象类必须要实现该接口的所有方法,抽象类可以不用实现;
8. 在实现多个接口的时候一定要避免方法名的重复;
9. 不能使用new操作符实例化一个接口,但可以声明一个接口变量,改变量必须引用(refer to)一个实现该接口的类的对象,可以使用instanceof检查一个对象是否实现了某个特定的接口;例如:if(anObject instanceof Comparable){};
10. ISP(Interface Segregation Principle):面向对象的一个核心原则;它表明使用多个专门的接口比使用单一的接口要好;一个类对另外一个类的依赖性应当是建立在最小的接口上;一个接口表示一个角色,不应当将不同的角色都交给一个接口,没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染;
11. 抽象类是为了把相同的东西提取出来,是为了重用;而接口的作用是提供程序里面固化的契约,是为了降低耦合;抽象类表示的是这个对象是什么;接口表的是这个对象能做什么;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值