栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

继承,多态,字符串和修饰符

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

继承,多态,字符串和修饰符

一、继承 1.继承 1.1 概述

使用已存在的类的定义作为基础建立新类的技术。

格式: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包下面的类不需要导包,其他都需要;
看该类的解释说明和类结构;
学习该类的构造方法和成员方法。

2.String 2.1 概述

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";

2.4 对象特点

不变性:不变性是指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():获取字符串的长度。

3.StringBuilder 3.1 概述

StringBuilder类在java.lang包下, 无需导包, 可以直接使用;

StringBuilder是一个可变的字符序列, 也叫字符串缓冲区类;

我们可以把它看做一个容器, 这里的可变指的是StringBuilder对象中的内容是可变的。

3.2 String和StringBuilder之间的区别

String: 内容是不可变的;
StringBuilder: 内容是可变的。

3.3 构造方法

public StringBuilder():创建一个空白可变字符串对象, 它不含有任何内容;
public StringBuilder(String str):根据字符串的内容, 来创建可变字符串对象。

3.4 添加和反转方法

public StringBuilder append(任意类型):添加数据, 并返回对象本身;
public StringBuilder reverse():返回相反的字符序列。

3.5 StringBuilder和String之间的相互转换

public String toString(): 通过toString() 就可以实现把StringBuilder 转换为String;
public StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilder。

3.6 通过帮助文档查看StringBuilder中的方法

public StringBuilder append(任意类型):添加数据, 并返回对象本身;
public StringBuilder reverse():返回相反的字符序列;
public String toString():用来将StringBuilder对象, 转成其对应的字符串形式的。

四、修饰符 1.包 1.1 概述

组织类的一种方式。

格式:package 包名;(多级包用.分开)。

2.导包 2.1 概述

使用不同包下的类时,使用的时候要写类的全路径,写起来太麻烦
所以java提供了导包的功能。

格式:import 包名;

3.修饰符 3.1 权限修饰符

public:(公共权限)

可以修饰类,成员变量,成员方法,构造方法;
被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。

protected:(受保护权限)

可以修饰成员变量,成员方法,构造方法,不能修饰类(外部类,内部类不考虑);
如果有不同包的类想调用它们,那么这个类必须是定义它们的类的子类。


default(默认权限)

类,成员变量,成员方法,构造方法都能使用默认权限,即不写任何关键字;
默认权限即同包权限,同包权限的元素只能在定义它们的类中使用,以及同包的类中被调用。


private:(私有权限)

可以修饰成员变量,构造方法,成员方法,不能修饰类(外部类,内部类不考虑);
被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。


注意:
并不是每个修饰符都可以修饰类(指外部类),只有public和default可以;
所有修饰符都可以修饰数据成员,方法成员,构造方法;
为了代码安全起见,修饰符不要尽量使用权限大的,而是适用即可。比如,成员变量,如果没有特殊需要,尽可能用private;
修饰符修饰的是”被访问”的权限。

3.2 状态修饰符

final(最终态)

概述:final 在 Java 中的意思是最终,也可以称为完结器,表示对象是最终形态的,不可改变的意思。

特点:

修饰方法:表明该方法是最终方法,不能被重写;
修饰变量:表明该变量是常量,不能再次被赋值;
修饰类:表明该类是最终类,不能被继承。

修饰局部变量:

变量是基本类型:final修饰指的是基本类型的数据值不能发生改变;

变量是引用类型:final修饰指的是引用类型的地址值不能发生改变,但是地址里的内容可以发生改变。

static(静态)

概述:在类中,用static声明的成员变量为静态成员变量,也成为类变量。

特点:被类的所有对象共享;

可以通过类名调用。


 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024064.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号