/**
一、字符串常量池-(了解即可)
特点及作用:存储在【方法区】中,可以【重复的利用】已有的【字符串对象】->【节约内存】
字符串
String:固定字符串,不可变字符串(对象里存储的字符不能更改)
StringBuilder:可变字符串(对象里存储的字符可以更改)
StringBuffere:可变字符串(对象里存储的字符可以更改)
string intern:始终返回字符串对象在【字符串常量池】中对应的内容的【字符串对象】。
--》利用常量池-》节约内存。
1)常量池的对象调用intern:直接返回自己的对象。
2)堆里的对象调用intern:如果常量池有对应内容的对象,直接返回常量池对象,没有,
创建一个字符串对象在常量池中,再返回。
String创建对象的两种方式-》已经利用字符串常量池
1)字符串字面值
语法:"字符串内容"
2)new对象
new String(字符串内容)
String(String original)
copy参数original的内容到新字符串对象中,并返回新对象。
注意点
1)字符串字面值--》可以利用字符串常量池
2)new String(字符串内容)--》不可以利用字符串常量池
--->怎么选择==》使用字符串字面值--》可以利用字符串常量池--》节约内存
二、面向超类型编程-》
1)定义超类型员工Staff
2)具体员工-继承Staff
3)超类型员工Staff-定义统一功能-工作
4)具体员工-重写-工作功能
超类型--》普通类-存在的问题
1)具体类【可以不重写】必须重写的方法
2)具体类-作为超类型,【也可以创建对象】-》new Staff
不应该创建对象,因为Staff是我们抽象出来的,不是业务需要的类。
三、抽象类:也是类,相比普通类而言,多了可以定义抽象方法
抽象方法 ?
就是有功能名字,没有功能实现。
抽象方法有什么用?
有时候,类中有一些功能不能确定具体怎么完成,就可以定义为抽象的方法
抽象和具体不是一定的:由需求,由客户决定
abstract:抽象的
抽象类的定义语法
abstract class 抽象类名{
//成员变量,静态变量,构造器....
//多了【抽象方法-(特殊成员方法)】
}
抽象方法的定义语法
访问修饰符 abstract 返回值类型 方法名(参数列表);
抽象类注意点
1)抽象类可以拥有0到多个抽象方法
2)普通类不能拥有抽象方法,有抽象方法必须定义为抽象类。
3)抽象类不能(实例化)创建对象
4)抽象类的子类型
a)普通类:对于父类抽象类的所有的抽象的方法-》必须全部实现(重写)
b)抽象类:对于父类抽象类的所有的抽象的方法-》可选实现(重写)
5)abstract不能和static一起使用-》面向对象
6)abstract不能和final一起使用-》矛盾了
四、接口是什么?
生活中,usb(传输数据,充电),指纹(解锁,支付),wifi(传输数据,上网)就是接口!!
简单理解接口:就是描述了一套抽象功能的集合,就是能完成的事情,但是不做实现!!!
接口和抽象类:包含了抽象的功能,不能创建对象。
都是作为超类型-》规范统一的数据和功能来使用。
怎么选择?接口和抽象类
1)如果超类型中有【数据也有功能】---》抽象类】
2)如果超类型中【只有功能】---》接口
定义接口的语法
interface 接口名{
//公共的抽象的方法
//公共的静态的常量-(用的少)
}
公共的抽象的方法:【public abstract】 返回值类型 方法名(参数列表);
注意:【public abstract】可以不写,默认加上。
公共的静态的常量:【public static final】 数据类型 常量名[=值1],...;
注意:【public static final】可以不写,默认加上。
1)类和类的关系
类可以单继承类:在子类中可以得到继承链上所有的【数据和功能】
类Person继承类Animal
class Person extends Animal{}
2)类和接口的关系
类可以多实现接口:在子类中得到接口中所有的【抽象-功能】
类Person继承类Animal,实现Runnable接口(可以跑的),实现Flyable接口(可以飞的)
class Person [extends Animal] [implements Runnable,Flyable]{}
3)接口和接口的关系
接口可以多继承接口:在子接口中得到所有继承的接口中所有的【抽象-功能】
接口A,继承接口B和C
interface A extends B,C{
}
*/
一、字符串常量池-(了解即可)
特点及作用:存储在【方法区】中,可以【重复的利用】已有的【字符串对象】->【节约内存】
字符串
String:固定字符串,不可变字符串(对象里存储的字符不能更改)
StringBuilder:可变字符串(对象里存储的字符可以更改)
StringBuffere:可变字符串(对象里存储的字符可以更改)
string intern:始终返回字符串对象在【字符串常量池】中对应的内容的【字符串对象】。
--》利用常量池-》节约内存。
1)常量池的对象调用intern:直接返回自己的对象。
2)堆里的对象调用intern:如果常量池有对应内容的对象,直接返回常量池对象,没有,
创建一个字符串对象在常量池中,再返回。
String创建对象的两种方式-》已经利用字符串常量池
1)字符串字面值
语法:"字符串内容"
2)new对象
new String(字符串内容)
String(String original)
copy参数original的内容到新字符串对象中,并返回新对象。
注意点
1)字符串字面值--》可以利用字符串常量池
2)new String(字符串内容)--》不可以利用字符串常量池
--->怎么选择==》使用字符串字面值--》可以利用字符串常量池--》节约内存
二、面向超类型编程-》
1)定义超类型员工Staff
2)具体员工-继承Staff
3)超类型员工Staff-定义统一功能-工作
4)具体员工-重写-工作功能
超类型--》普通类-存在的问题
1)具体类【可以不重写】必须重写的方法
2)具体类-作为超类型,【也可以创建对象】-》new Staff
不应该创建对象,因为Staff是我们抽象出来的,不是业务需要的类。
三、抽象类:也是类,相比普通类而言,多了可以定义抽象方法
抽象方法 ?
就是有功能名字,没有功能实现。
抽象方法有什么用?
有时候,类中有一些功能不能确定具体怎么完成,就可以定义为抽象的方法
抽象和具体不是一定的:由需求,由客户决定
abstract:抽象的
抽象类的定义语法
abstract class 抽象类名{
//成员变量,静态变量,构造器....
//多了【抽象方法-(特殊成员方法)】
}
抽象方法的定义语法
访问修饰符 abstract 返回值类型 方法名(参数列表);
抽象类注意点
1)抽象类可以拥有0到多个抽象方法
2)普通类不能拥有抽象方法,有抽象方法必须定义为抽象类。
3)抽象类不能(实例化)创建对象
4)抽象类的子类型
a)普通类:对于父类抽象类的所有的抽象的方法-》必须全部实现(重写)
b)抽象类:对于父类抽象类的所有的抽象的方法-》可选实现(重写)
5)abstract不能和static一起使用-》面向对象
6)abstract不能和final一起使用-》矛盾了
四、接口是什么?
生活中,usb(传输数据,充电),指纹(解锁,支付),wifi(传输数据,上网)就是接口!!
简单理解接口:就是描述了一套抽象功能的集合,就是能完成的事情,但是不做实现!!!
接口和抽象类:包含了抽象的功能,不能创建对象。
都是作为超类型-》规范统一的数据和功能来使用。
怎么选择?接口和抽象类
1)如果超类型中有【数据也有功能】---》抽象类】
2)如果超类型中【只有功能】---》接口
定义接口的语法
interface 接口名{
//公共的抽象的方法
//公共的静态的常量-(用的少)
}
公共的抽象的方法:【public abstract】 返回值类型 方法名(参数列表);
注意:【public abstract】可以不写,默认加上。
公共的静态的常量:【public static final】 数据类型 常量名[=值1],...;
注意:【public static final】可以不写,默认加上。
1)类和类的关系
类可以单继承类:在子类中可以得到继承链上所有的【数据和功能】
类Person继承类Animal
class Person extends Animal{}
2)类和接口的关系
类可以多实现接口:在子类中得到接口中所有的【抽象-功能】
类Person继承类Animal,实现Runnable接口(可以跑的),实现Flyable接口(可以飞的)
class Person [extends Animal] [implements Runnable,Flyable]{}
3)接口和接口的关系
接口可以多继承接口:在子接口中得到所有继承的接口中所有的【抽象-功能】
接口A,继承接口B和C
interface A extends B,C{
}
*/