声明:本文为了梳理JAVA基础而整理,结合网络信息与个人理解汇聚而成,若不小心构成侵权,随时联系,随时删除。
java面向对象四个基本特性:抽象、继承、封装、多态。
抽象、继承、封装是多态的基础,多态是抽象、继承、封装的表现。
封装
一、浅谈封装
- 概念
将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的访问和操作。 - 目的
直接通过操控类对象来达到目的,不需要对具体实现十分了解,使类属性和方法的具体实现对外不可见。不但方便还起到了保护作用。 - 用途
- 常用的对象类,成员变量及其get set方法。成员变量为私有不允许外部访问,但提供了对象的getset方法,并可以在该方法中加以控制或操作。比如判断如果set为空,则赋值为0。等等。
- 普通方法类中,若某一方法只先为本类其他方法所服务,完全可以设置为私有方法。内部私有,外部拒绝访问。
继承
一、浅谈继承
多数借鉴来自:https://www.cnblogs.com/chenssy/p/3354884.html
1、概念
在程序中继承以后,你的父类和你的子类同样的也具有某一成员变量和某些方法,谁继承了父类谁就是这个父类的子类,他们之间也就存在中某种连带关系。
2、目的
防止代码重复、冗余。
3、用途
定义一个类做为父类,将一些共有的属性和方法定义在这个类中,当某一个类需要使用到这些方法和属性的时候,就可以直接通过extends关键字就可以直接调用父类中的成员变量和方法,方便快捷。
4、特点
- 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
- 子类拥有父类非private的属性和方法。
- 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
- 子类可以用自己的方式实现父类的方法。
- 可以实现多个接口,但只能继承一个父类。
二、示例
package com.fangk.juc;
class Fu{
String fu ="fu";
void playFu(){
System.out.println("将被继承并重写的父类方法");
}
void playSelf(){
System.out.println("父类自己的实现方法");
}
}
class Zi extends Fu{
String fu = "zi";
void playFu(){
System.out.println("重写父类playFu");
}
void playZi(){
System.out.println("子类自身play");
}
}
public class TestFuZi {
public static void main(String[] args) {
Fu fu = new Fu();
fu.playFu();//打印父类自己的将要被重写的方法
fu.playSelf();//打印父类自己的未被重写的方法
System.out.println(fu.fu);//打印自己的成员变量
Zi zi = new Zi();
zi.playFu();//重写父类方法,打印子类重写后的方法
zi.playZi();;//打印子类自己的方法
zi.playSelf();//打印子类没有,继承自父类的方法
System.out.println(zi.fu);//打印父子共有的成员变量,出来的是子类成员变量
}
}
---结果
将被继承并重写的父类方法
父类自己的实现方法
fu
重写父类playFu
子类自身play
父类自己的实现方法
zi
三、向上转型
待补充
四、补充扩展
摘录:https://www.cnblogs.com/fzxey/p/10742635.html
编写Java程序时一般要满足开闭原则。即:对扩展开放,对修改关闭;
高内聚,低耦合: 类与类之间,功能与功能之间,模块与模块之间,功能尽量内聚,不同模块之间,尽量独立。
继承的注意点:
- 单一继承性。(在Java中是不支持多继承的,通俗的说子类只能有一个父类,而父类可以有很多子类。)
- 支持多层继承。(继承可以一直传下去,子类有父类,父类又有父类...)
- 如果父类成员使用private修饰,那么子类不能被继承。(private只是对本类有效)
- 如果一个子类继承了父类的属性和方法还可以有自己特有的属性和方法。(不光有父类的属性(可继承的)和方法(可继承的),也有自己独有的属性和方法。)
- 当子类和父类的成员变量重名的时候,子类优先。(就近原则)
- 构造方法不能够被继承(构造方法必须要与类名保持一致)。
继承的使用
- 一般在写代码的时候发现代码中存在重复代码,需要向上抽取,考虑继承。
- 当某个类的设计非常复杂的时候可以考虑继承 例如: 设计一个窗口类
(继承是一把双刃剑,要慎用!)
网友评论