除去语法以外超级浓缩版本,或许能帮你考试糊弄过关。
1.访问private属性,使用类内的函数getter()。
工具栏:Source-->generate getters and setters
2.内部类。
创建外部类的同时,用外部类对象创建内部类对象,方法如下:
内部类 对象名=外部类对象.new 内部类构造方法。
例:Inner i = hello.new Inner();
四种内部类:成员内部类,静态内部类,方法内部类,匿名内部类。
成员内部类:
注意:1、 外部类是不能直接使用内部类的成员和方法
解决办法:先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。
2、如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。
格式: 外部类.this.外部类属性。
静态内部类(static):
1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建内部类 对象名= new 内部类();
方法内部类:
内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。
注意:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。
例:// 外部类中的show方法
public void show() {
// 定义方法内部类
class MInner {
int score = 83;
public int getScore() {
return score + 10;
}
}
3.继承“is-a”
父类不能“private”修饰,且private修饰的属性无法继承。
extends关键字【理解成扩展父类的功能即可】
创建对象时,先父类的属性初始化-->父类构造方法,再子类的属性初始化-->子类的构造方法。
注意:父类定义了含参构造方法之后,必须附上无参的默认构造方法,否则子类会报错。
4.重写
与父类方法的定义完全相同,即可覆盖。
5.final关键字【无法再修改】
该方法无法覆盖、该类无法被继承,该属性不进行隐式初始化或在构造方法中赋值(择其一,而且必须执行其一),该变量只能初始化一次此后变为常量。
6.super关键字
指代父类对象。
7.Object类
toString()方法返回对象的哈希code码(对象地址字符串)
格式:【System.out.println(对象名)】
可以重写toString方法来输出对象的属性。【菜单Source-->generate toString】
equals()方法比较对象的引用是否指向同一块内存区。(是否是同一个东西而非同样属性的不同东西)【重点】
类似于“==”,因为对象之间的==比较的是是否为同一个对象。
重写的步骤与上一步相同,可以比较两个对象的属性是否相同。
8.多态
a.引用多态(1.父类引用指向本类对象;2.父类引用指向子类对象Dad dad = new Son();)
b.方法多态(将父类方法重写或继承)
注意:子类独有的方法无法用父类引用调用
9.引用类型转换
向上:隐式/自动类型转换,小类型向大类型(子类引用转父类引用Dad dad = son;可用)
向下:强制类型转换【有风险,如溢出】(Son son = dad;有风险,应当以Son son = (Son) dad;的格式)
注意:当一个父类对象引用本身就是从子类a的对象引用转换过来的,无法强制转换成子类b的对象引用【理由:类型已经不同】
instanceof关键字的使用【是否属于同一类型】
格式:对象名 instanceof 类名
如果true,则进行强制类型转换。
10.抽象类
关键字abstract
子类的随机性。
格式:public abstract class 类名{}
1.抽象方法只能有声明。
2.有抽象方法的类一定是抽象类,其中抽象类可以包含普通的方法。
3.抽象类不能直接创建,可以定义引用变量。
11.接口(interface定义 & implements引用)
接口可以继承(extends)父接口,内部是常量和抽象方法。
格式:【修饰符】interface 接口名 [extends 父接口1,...]
接口内部的抽象方法不能被private和protected修饰。
被应用的接口中的抽象方法必须被实现。
格式:【修饰符】class 子类名 extends 父类名 implements 接口1,接口2...
{}
接口的引用可以指向一个实现了接口的对象。
还有一种用法,结合匿名内部类。
即没有名字的内部类,关注实现而非实现类的名称。
格式:
接口名 接口引用 = new 接口名()
{
//抽象方法实现
};//即当即创建,仅限于该接口引用可用。
接口引用.抽象方法;
或者
new 接口名()
{
//抽象方法实现
}.抽象方法;
也可达到目的。
12.UML
用例图:表达系统如何满足所收集的业务规则,以及特定的用户需求等信息。【去餐馆吃饭,顾客和厨师的需求和职能。】
序列图:按照交互发生的序列顺序,描述对象之间的交互。【银行取钱的过程】
类图:类名,属性,方法(override重写)
用powerdesign做类图(也能自动生成java代码,菜单栏中的“语言”-->“Generate Java code”)
作者:先生Tank
链接:https://www.jianshu.com/p/a18048bbedd4