使用已存在的类的定义作为基础建立新类的技术。
格式:public class 子类名 extends 父类名{ }
1.2 好处和弊端好处:提高了代码的复用性;提高了代码的可维护性。
弊端:高可维护性的同时,也极大降低了程序的灵活性,父类的改变将对所有子类产生影响,不管子类需不需要这个改变。
1.3 什么时候使用继承判断的准则是:子类is a 父类?
1.4 有关super的使用super.成员变量:调用父类的成员变量;
super(...) :调用父类的构造方法;
super.成员方法 :调用父类的成员方法。
1.5 继承的特点子类特点:可以有父类内容;还可以有自己特有内容。
变量访问特点:子类局部范围找;子类成员范围找;父类成员范围找;都没有就报错。
构造方法访问特点:(1)子类中所有的构造方法默认都会访问父类中空参数的构造方法:
因为子类会继承父类中的数据,可能还会使用父类的数据,所以子类初始化之前,一定要先完成父类数据初始化;
注意:子类每一个构造方法的第一条语句默认都是super();
(2)如果父类中没有无参构造方法,默认不会对父类成员变量进行初始化,解决方案:
1、在父类中加一个无参构造方法
2、通过使用super关键字去显示的调用父类的带参构造方法
3、子类通过使用this去调用本类的其他构造方法
子类一定要有一个去访问了父类的构造方法,否则父类数据就没有初始化
注意事项:
this(...)或super(...)必须出现在第一条语句上。
如果不是放在了第一条语句上,就可能对父类的数据进行了多次初始化
成员方法访问特点:子类成员范围找;父类成员范围找;都没有就报错。
1.6 注意事项子类只能继承父类所有非私有的成员(成员方法和成员变量);
子类不能继承父类的构造方法,但可以通过super关键字去访问父类构造方法;
不要为了部分功能而去继承。
2.方法重写(Override) 2.1 概述子类中出现了和父类中方法一模一样(方法名、参数列表、返回值类型)的方法。
2.2 应用当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样即沿袭了父类的功能,又定义了子类特有的内容。
2.3 使用特点如果方法名不同,就调用对应方法;
如果方法名相同,最终使用的是子类自己的。
2.4 注意事项父类中私有方法不能被重写 (父类私有方法子类无法继承 );
子类重写父类方法时,访问权限不能更低;
父类静态方法,子类也必须通过静态方法进行重写。
二、多态 1.多态 1.1 概述同一个对象在不同时刻表现出的多种状态。
1.2 成员访问特点成员变量:编译看父类,运行看父类;
成员方法:编译看父类,运行看子类。
为什么两者不一样?
成员方法有重写,成员变量没有。
1.3 好处和弊端好处:提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作;
弊端:不能使用子类的特有成员。
1.4 转型向上转型:父类引用指向子类对象就是向上转型;
向下转型:格式:子类型 对象名 = (子类型)父类引用;
三、字符串 1.API(英文全称Application Programming Interface,翻译为“应用程序编程接口”) 1.1 概述应用程序编程接口;
Java API对于程序员来说就是一本可以检索查找的[字典] ,是JDK官方提供给程序开发者使用类的说明文档。这些类将底层的代码封装起来,我们不需要关注这些类底层是如何实现的,我们只需要知道这些类是如何使用的。平常开发使用JDK类库的时候,通过查阅API方式进行的。
1.2 使用步骤打开帮助文档;
点击显示、找到索引,找到输入框;
在输入框中输入你要查找的类,然后回车;
看该类的所在包,对于Java.lang包下面的类不需要导包,其他都需要;
看该类的解释说明和类结构;
学习该类的构造方法和成员方法。
string是C++、java、VB等编程语言中的字符串,字符串是一个特殊的对象,属于引用类型。 在java、C#中,String类对象创建后,字符串一旦初始化就不能更改,因为string类中所有字符串都是常量,数据是无法更改,由于string对象的不可变,所以可以共享。对String类的任何改变,都是返回一个新的String类对象。
2.2 特点字符串内容永不可变;
字符串可以共享使用;
字符串效果相当于char[]字符数组,但是底层原理都是byte[]字节数组。
2.3 构造方法public String():创建一个空白字符串,不含任何内容。
public String(char[] array):根据字符数组的内容,来创建对应的字符串。
public String(byte[] array):根据字节数组的内容,来创建对应的字符串。
直接创建:String str = "Hello";
不变性:不变性是指String对象一旦生成,则不能再对他进行改变。可以泛化成不变模式(immutable)。
针对常量池的优化:当两个String对象拥有相同的值时,他们只引用常量池中的同一个拷贝,当同一个字符串反复出现时,这个技术可以大幅度节省内存空间。
类的final定义:final类的String对象在系统中不能有任何子类。
2.5 字符串比较使用==做比较:基本类型:比较数据值是否相同;
引用类型:比较地址值是否相同。
equals() 方法将逐个地比较两个字符串的每个字符是否相同。
2.6 通过帮助文档查看String方法public boolean equals(Object obj):比较两个字符串的内容是否相同, 区分大小写;
public char charAt(int index):根据给定的索引, 获取其对应的字符;
public int length():获取字符串的长度。
StringBuilder类在java.lang包下, 无需导包, 可以直接使用;
StringBuilder是一个可变的字符序列, 也叫字符串缓冲区类;
我们可以把它看做一个容器, 这里的可变指的是StringBuilder对象中的内容是可变的。
3.2 String和StringBuilder之间的区别String: 内容是不可变的;
StringBuilder: 内容是可变的。
public StringBuilder():创建一个空白可变字符串对象, 它不含有任何内容;
public StringBuilder(String str):根据字符串的内容, 来创建可变字符串对象。
public StringBuilder append(任意类型):添加数据, 并返回对象本身;
public StringBuilder reverse():返回相反的字符序列。
public String toString(): 通过toString() 就可以实现把StringBuilder 转换为String;
public StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilder。
public StringBuilder append(任意类型):添加数据, 并返回对象本身;
public StringBuilder reverse():返回相反的字符序列;
public String toString():用来将StringBuilder对象, 转成其对应的字符串形式的。
组织类的一种方式。
格式:package 包名;(多级包用.分开)。
2.导包 2.1 概述使用不同包下的类时,使用的时候要写类的全路径,写起来太麻烦
所以java提供了导包的功能。
格式:import 包名;
3.修饰符 3.1 权限修饰符public:(公共权限)
可以修饰类,成员变量,成员方法,构造方法;
被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。
protected:(受保护权限)
可以修饰成员变量,成员方法,构造方法,不能修饰类(外部类,内部类不考虑);
如果有不同包的类想调用它们,那么这个类必须是定义它们的类的子类。
default(默认权限)
类,成员变量,成员方法,构造方法都能使用默认权限,即不写任何关键字;
默认权限即同包权限,同包权限的元素只能在定义它们的类中使用,以及同包的类中被调用。
private:(私有权限)
可以修饰成员变量,构造方法,成员方法,不能修饰类(外部类,内部类不考虑);
被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。
注意:
并不是每个修饰符都可以修饰类(指外部类),只有public和default可以;
所有修饰符都可以修饰数据成员,方法成员,构造方法;
为了代码安全起见,修饰符不要尽量使用权限大的,而是适用即可。比如,成员变量,如果没有特殊需要,尽可能用private;
修饰符修饰的是”被访问”的权限。
final(最终态)
概述:final 在 Java 中的意思是最终,也可以称为完结器,表示对象是最终形态的,不可改变的意思。
特点:
修饰方法:表明该方法是最终方法,不能被重写;
修饰变量:表明该变量是常量,不能再次被赋值;
修饰类:表明该类是最终类,不能被继承。
修饰局部变量:
变量是基本类型:final修饰指的是基本类型的数据值不能发生改变;
变量是引用类型:final修饰指的是引用类型的地址值不能发生改变,但是地址里的内容可以发生改变。
static(静态)
概述:在类中,用static声明的成员变量为静态成员变量,也成为类变量。
特点:被类的所有对象共享;
可以通过类名调用。



