一.继承
(1)类的继承格式
class 父类{} //定义父类 class 子类 extends 父类{} //使用extends关键字实现继承
(2)通过子类继承父类
只准多层继承不能多重继承,在java中只准单继承,不能使用多重继承,即:一个子类只能继承一个父类。
(3)继承注意事项
子类是不能直接访问父类的私有成员的,但是子类可以调用父类中的非私有方法,但是不能直接调用父类中的私有成员。子类直接访问父类的私有属性受限制,而要通过setter()或者getter()调用,就可以访问了
二.继承的进一步研究
序号 | 区别点 | 重载 | 覆写 |
1 | 单词 | Overloading | Overriding |
2 | 定义 |
方法名称相同,参数的类型 或个数不同 对权限没有要求 |
方法名称,参数的类型,返回值类型全部相同 被覆写的方法不能拥有更严格的权限 |
3 | 范围 | 发生在一个类中 | 发生在继承类中 |
序号 | 区别点 | this | super |
1 | 属性访问 | 访问本类中的属性,如果本类中没有此属性则中父类中继续查找 | 访问父类中的属性 |
2 | 方法 | 访问本类中的方法,如果本类中没有此方法,则从父类中查找 | 直接访问父类的方法 |
3 | 调用参数 | 调用本类的构造,必须放在构造方法的首行 | 调用父类构造,必须放在子类构造方法的首行 |
4 | 特殊 | 表示当前对象 | 无此概念 |
三.final关键词
(1)使用final声明的类不能又子类
(2)使用final声明的方法不能被子类调用
(3)使用final声明的变量即成为常量,常量不可以修改
四.抽象类的基本概念
(1)包含一个抽象方法的类必须是抽象类
(2)抽象类和抽象方法都要使用abstract关键声明:
(3)抽象方法只需要声明而不需要实现
(4)抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中全部的抽象方法
五.对象的多态性
一.两种体现
(1)方法的重载与覆写
(2)对象的多态性
二.对象的多态性:
1.向上转型:子类对象->
父类对象,对于向上转型,程序会自动完成,格式:父类 父类对象=子类实例
。
2.向下转型:父类对象->
子类对象,对于向下转型,必须明确指明要转型的子类类型,格式:子类 子类对象=(子类)父类实例
。
六.实验题
(1)
.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)
- 统计该字符串中字母s出现的次数。
- 统计该字符串中子串“is”出现的次数。
- 统计该字符串中单词“is”出现的次数。
- 实现该字符串的倒序输出.
实验代码
package hello; public class gg { public static void main(String[] args) { String str = "this is a test of java"; String str1=str.replaceAll("is","x"); char b[] = str1.toCharArray(); int y=0; for(int i=0;i<b.length;i++) { if(b[i]=='x') { y++; } } char c[] = str.toCharArray(); int count = 0,z = 0; for(int i=0;i<c.length;i++) { if(c[i]=='s') { count++; } } System.out.println("该字符串中字母s出现的次数:"+count); for(int i=0;i<c.length;i++) { if(c[i]=='i'&&c[i+1]=='s') { z++; } } System.out.println("该字符串中子串“is”出现的次数:"+z); System.out.println("该字符串中单词“is”出现的次数:"+y); String k=""; for(int i=c.length-1;i>=0;i--) { k=k+c[i]; } System.out.print("该字符串的倒序输出:"+k); } }
实验结果
(2)请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。
实验代码
package hello;
import java.util.Scanner;
public class qqqq {
public static void main(String[] args) {
System.out.print("请输入一个字符串:");
Scanner sc = new Scanner(System.in);
String str=sc.nextLine();
char a[]=str.toCharArray();
char[] b=null;
b = new char[str.length()];
int j=0;
for(int i=a.length-3;i<a.length;i++) {
b[j]=a[i];
j++;
}
for(int i=0;i<a.length-3;i++)
{
b[j]=a[i];
j++;
}
System.out.print("加密结果为:");
System.out.print(b);
}
}
注:这里必须先给后面的数输出到前面来,先把j从0+到3,然后从3把后面的数依次输出
实验结果
(3)已知字符串“ddejidsEFALDFfnef2357 3ed”。输出字符串里的大写字母数,小写英文字母数,非英文字母数
实验代码
package hello; public class ooo { public static void main(String[] args) { String str ="ddejidsEFALDFfnef2357 3ed"; char a[] = str.toCharArray(); int x=0,z=0,y=0; for(int i=0;i<a.length;i++) { if(a[i]>='A'&&a[i]<='Z') { x++; } else if(a[i]>='a'&&a[i]<='z') { y++; } else { z++; } } System.out.println("大写字母数;"+x); System.out.println("小写字母数;"+y); System.out.println("非英文字母数;"+z); } }
实验结果