第五周课程总结:
这一周学了很多知识,如下:
一、继承:
继承,顾名思义,就是“子承父业”,在Java里面就是子类继承父类的属性,构造方法等等,这其中最重要的就是extends关键词了,可以用它来实现继承,继承的基本格式:
class Student extends Person
子类只有一个父类,但是父类可以有多个子类,因为在Java中只允许单继承,不能使用多重继承,extends关键词也可以实现继承,但它本意是拓展,与其说是继承,不如是一个类拓展已有类的功能,又称派生类。
子类不能直接访问父类中私有操作,但可以通过其他操作间接访问。
二、方法覆写与重载的区别
覆写的单词为:Overriding,重载的单词是:Overloading;重载的方法名称相同,但参数的类型或个数不同,覆写的所有方法名称,参数类型,返回值类型全部相同;被覆写的方法不能拥有更严格的权限;重载是发生在一个类中,而覆写是发生在继承类中。
三、super关键词
super可以从子类中调用父类的构造方法、普通方法、属性。super与this一样,都是要放在构造方法首行。
super与this非常相似,但还是存在很大的区别
在访问方法和属性时,this是先访问本类,如果没有则去父类中继续查找,而super是直接访问父类;在调用构造方法是,this必须放在构造方法首行,而使用super必须放在子类构造方法首行。
四、final关键词
final是结束的意思,所有final就是说明此类不能被继承了就是没有子类了,在使用final声明变量时,要求全部字母大写!
五、抽象类:
抽象类的作用就是比普通类多了一些抽象方法:
abstract class 抽象类名称{
属性;
访问权限 返回值类型 方法名称(参数){ //普通方法
[return 返回值];
}
访问权限 abstract 返回值类型 方法名称(参数); //抽象方法
}
其中可以得知抽象类和抽象方法都需要使用abstract
关键词声明,抽象方法只需要声明,而不用实现,抽象类必须被子类继承,子类必须覆写抽象类中的全部抽象方法
六、对象的多态性
在Java中对象主要以方法的重载与覆写和对象的多态性体现,
多态性主要分为向上转型和向下转型,向上转型是子类对象转向父类对象,向下转型则相反,在这其中在发生向下转型之前必须先发生向上转型,不然将会出现对象转换异常。
试验报告(三)
一、已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)
1.统计该字符串中字母s出现的次数。
package 作业;
public class Java1 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
String str=new String("this is a test of java");
char c[]=str.toCharArray();
int count =0;
for(int i=0;i<c.length;i++) {
if(c[i]=='s') {
count++;
}
}
System.out.println("s个数:"+count);
}
}
截图:
2.统计该字符串中子串“is”出现的次数。
package 作业;
public class Java3 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
String str=new String("this is a test of java");
int count=0;
int i=0;
while(str.indexOf("is",i)!=-1){
count++;
i=str.indexOf("is",i)+1;
}
System.out.println("is个数:"+count);
}
}
截图:
3.统计该字符串中单词“is”出现的次数。
package 作业;
public class Java4 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
String str="this is a test of java";
int count=0;
String[] c=str.split(" ");
for(String e:c) {
if(e.equals("is")) {
count++;
}
}
System.out.println("is作为字串出现的次数:"+count);
}
}
截图:
4.实现该字符串的倒序输出。
package 作业;
public class Java5 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
StringBuffer str=new StringBuffer();
str.append("this is a test of java");
System.out.print("倒序:"+str.reverse());
}
}
截图:
二、请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。
package 作业1;
import java.util.Scanner;
public class Java {
public static void main(String[] args) {
// TODO 自动生成的方法存根
int j=0,i=0;
System.out.println("输入一个字符串:");
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
char c[]=str.toCharArray();
char[] c1=null;
c1=new char[str.length()];
for(i=c.length-3;i<c.length;i++) {
c1[j]=c[i];
j++;
}
for(i=0;i<c.length-3;i++) {
c1[j]=c[i];
j++;
}
System.out.print("加密后:");
System.out.println(c1);
}
}
截图:
三、已知字符串“ddejidsEFALDFfnef2357 3ed”。输出字符串里的大写字母数,小写英文字母数,非英文字母数。
package 作业1;
public class Java4 {
public static void main(String[] args) {
String str="ddejidsEFALDFfnef2357 3ed";
int c1=0,c2=0,c3=0;
char c[]=str.toCharArray();
for(int i=0;i<str.length();i++) {
if('A'<=c[i]&&c[i]<='Z') {
c1++;
}
else if('a'<=c[i]&&c[i]<='z') {
c2++;
}
else {
c3++;
}
}
System.out.println("大写字母数:"+c1);
System.out.println("小写字母数:"+c2);
System.out.println("非字母数:"+c3);
}
}
截图: