第五周学习总结&实验报告(三)
第五周学习总结&实验报告(三)
这一周又学习了新的知识点——继承。
一、继承的基本概念是:
*定义一个类,在接下来所定义的类里面如果定义的属性与第一个类里面所拥有的属性一样,那么我们在此就不需要重复定义,直接通过关键词“extends”,进行继承第一个类所拥有的属性和所有方法;
package javazjie;
class Person{
private String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Student extends Person{
private String school;
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
}
public class javazy {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student per1=new Student();
per1.setName("王麻子");
per1.setAge(19);
System.out.println("name:"+per1.getName()+",age:"+per1.getAge());
}
}
从上面的代码中可以发现person类中已经存在name和age两个属性,所以不希望在student类中在重新声明这两个属性,这个时候就需要考虑是不是可以将person类中的内容继续保留到student类中,就通过关键词extends来实现;
- 注意:只许多层继承不能多重继承。例如:错误示例“Class C extends A,B{}”;
- 正确示例:“Class A Class B extends A {} Class C extends B {}”。
使用extends关键词可以实现继承的关系,但是这个关键词的本身含义是“扩展”,更准确地说是一个扩展已有类的功能,在其他书中也会经常把子类称作派生类。
二、子类对象的实例化过程:
- 在继承的操作过程中,对于子类对象的实例化也是又要求的,即子类对象在实例化之前必须首先调用父类中的构造方法之后再调用子类自己的构造方法。也就是说子类再继承父类时是先对父类的属性进行实例化之后才实例化自己的,它会首先调用父类的构造方法。
package javazjie;
class Person{
private String name;
private int age;
public Person(){
System.out.println("父类Person中的构造方法");
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Student extends Person{
private String school;
public Student(){
System.out.println("子类Student中构造方法");
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
}
public class javazy {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student per1=new Student();
per1.setName("王麻子");
per1.setAge(19);
System.out.println("name:"+per1.getName()+",age:"+per1.getAge());
}
}
三、方法的覆写:
- 在继承概念中也存在覆写的概念,所谓方法覆写就是指子类定义了与父类中同名的方法,但是方法覆写是必须考虑到权限,即被子类覆写的方法不能拥有比父类方法更加严格的访问权限。
子类如果和父类声明了相同名称的属性,则在子类中直接访问的时候肯定是采用了“就近原则”,即先找到本类中的属性,如果此时要调用父类中的属性,直接使用“super.属性”格式即可。
| 区别点 | 重载 | 覆写 |
|---|---|---|
| 定义 | 方法名称相同,参数的类型或个数不同 | 方法名称、参数类型、返回值类型全部相同 |
| 定义 | 对权限没有要求 | 被覆写的方法不能拥有更严格的权限 |
| 范围 | 发生在一个类中 | 发生在继承类中 |
四、super关键词和this关键词的区别:
| 区别点 | this | super |
|---|---|---|
| 属性访问 | 访问本类中的属性,如果本类中没有此属性则从父类中继续查找 | 访问父类中的属性 |
| 方法 | 访问本类中的方法,如果本类中没有此方法,则从父类中继续查找 | 直接访问父类中的方法 |
| 调用构造 | 调用本类构造,必须放在构造方法的首行 | 调用父类构造方法,必须放在子类构造方法的首行(所以两个不可以同时使用) |
| 特殊 | 表示当前对象 | 无此概念 |
五、final关键词:final在Java中表示的意思是最终的意思,也可以称为完结器。可以使用final关键词声明、属性、方法,在声明的时候要注意以下几点:
- (1)使用final声明的类不能有子类;
- (2)使用final声明的方法不能被子类覆写;
- (3)使用final声明变量即成为常量,常量不可以修改;
实验报告
1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)
(1)统计该字符串中字母s出现的次数。
package shyzye;
public class shsan {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="this is a test of java";
int count=0;
char[] c=str.toCharArray();
for(int i=0;i<c.length;i++) {
if(c[i]=='s') {
count++;
}
}
System.out.println("S的个数:"+count);
}
}

(2)统计该字符串中单词“is”出现的次数。
package shyzye;
public class shsan2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
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);
}
}

(3)统计该字符串中子串“is”出现的次数。
package shyzye;
public class shsan3 {
public static void main(String[] args) {
String str="this is a test of java";
int i=0;
int count=0;
while(str.indexOf("is",i)!=-1){
count++;
i=str.indexOf("is",i)+1;
}
System.out.println("is作为字符出现的次数:"+count);
}
}

(4)实现该字符串的倒序输出。
package shyzye;
public class shsan4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer str=new StringBuffer();
str.append("this is a test of java");
System.out.print("倒序:"+str.reverse());
}
}

2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。
package shyzye;
import java.util.*;
public class shsan二 {
public static void main(String[] args) {
int i,j=0;
Scanner scanf=new Scanner(System.in);
String str=scanf.nextLine();
char chr[]=str.toCharArray();
char[] chr1=null;
chr1 = new char[str.length()];
for(i=chr.length-3;i<chr.length;i++) {
chr1[j]=chr[i];
j++;
}
for(i=0;i<chr.length-3;i++){
chr1[j]=chr[i];
j++;
}
System.out.print(chr1);
}
}

3.已知字符串“ddejidsEFALDFfnef2357 3ed”。输出字符串里的大写字母数,小写英文字母数,非英文字母数。
package shyzye;
public class shsans {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1="ddejidsEFALDFfnef2357 3ed";
int count1=0,count2=0,count3=0;
char[] up=str1.toCharArray();
for(int i=0;i<up.length;i++) {
if(up[i]>='a'&&up[i]<='z') {
count1++;
}
else if(up[i]>='A'&&up[i]<='Z') {
count2++;
}
else {
count3++;
}
}
System.out.println("小写英文字母:"+count1);
System.out.println("大写英文字母:"+count2);
System.out.println("其他字符:"+count3);
}
}

第五周学习总结&实验报告(三)的更多相关文章
- 第五周学习总结&实验报告三
第五周课程总结 1.this和super的区别: this:访问本类中的属性,如果本类没有此属性则从父类中继续查找:访问本类中的方法,如果本类中没有此方法则从父类中继续查找:调用本类构造,必须放在构造 ...
- 第五周课程总结&实验报告三
1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) •统计该字符串中字母s出现的次数. •统计该字符串中子串" ...
- 第五周课程总结&实验报告(三)
实验三 String类的应用 实验目的: (1)掌握类String类的使用: (2)学会使用JDK帮助文档: 实验内容: 1.已知字符串:"this is a test of java&qu ...
- 第五周课程总结&实验报告(四)
第五周课程总结 本周主要学习了 1.抽象类 抽象类的定义格式 abstract class抽象类名称{ 属性; 访问权限返回值类型方法名称(参数){ //普通方法 [return返回值]; } 访问权 ...
- 第八周学习总结&实验报告(6)
实验六 异常 一.实验目的: (1)理解异常的基本概念: (2)掌握异常处理方法及熟悉常见异常的捕获方法. 二.实验要求: (1)练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使 ...
- 第九周学习总结&实验报告七
实验报告: 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 实验 ...
- 第十三周学习总结&实验报告(八)
图像界面 件处理及监听处理 1.键盘事件(KeyEvent)及监听处理(KeyListener) 1.1加入事件监听 super.addWindowListener(new WindowAdapter ...
- 第五周课程总结&实验报告(三)
实验三 String类的应用 实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 实验内容 1.已知字符串:"this is a test of java".按要求执 ...
- 第八周学习总结&实验报告六
实验总结 :类的继承 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获方法. 实验要求 : 练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使用. 掌握自定义异 ...
随机推荐
- [转载]如何通过ssh进行上传/下载
[转载]如何通过ssh进行上传/下载 学校给配了服务器的用户账号,但是怎么向服务器中上传以及下载文件呢?Windows下可以使用Xftp和Xshell,但是Linux下能不能用命令行解决呢? 什么是S ...
- vue-Ie下踩坑20190820
开发的vue项目终于告一段落,终于是可以部署在测试服务器给客户看了,期间也是遇到各式各样的坑. 1.有些bug在谷歌是在没问题的,在ie上就会暴露出来,因为其中一个模块设计多个类型资源的列表,所以写纯 ...
- stars-one的原创工具——星之小说下载器(JavaFx应用 )
星之小说下载器Kotlin版 基于星之小说下载器Java版重构的Kotlin版本 github地址 使用说明 确保电脑有jdk8+以上的环境,双击即可运行(win10系统),win7则需要输入命令ja ...
- pyhton接口自动化测试-requests.post()
一.方法定义 二.post方法简单使用 1.带数据的post 2.带header的post 3.带json的post 4.带参数的post 5.普通文件上传 6.定制化文件上传 7.多文件上传 一.方 ...
- mysql个人初配置
记录下在ubuntu 18.04.3 LTS环境中安装mysql和个人初期简单设置. 1:安装myslq:sudo apt install mysql-server. 2:设置root密码.由于我没有 ...
- PAT Basic 1029 旧键盘 (20 分)
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 行中分别给出应该输入的文字.以及 ...
- 生成树计数及应用 Matrix-Tree
例:给定一个图,图上每条边是红色或蓝色 求恰好有K条红边的生成树的个数,N<=50. Matrix-Tree定理 对于限制条件可以利用多项式,把红边边权设为X,蓝边边权设为1. 最后求行列式得到 ...
- Java内部类的整理。
Java 内部类 分四种:成员内部类.局部内部类.静态内部类和匿名内部类. 成员内部类: (1)即作为外部类的一个成员存在,与外部类的属性.方法并列. 注意:成员内部类中不能定义静态变量,但可以访问外 ...
- 【洛谷P3413】萌数
题目大意:求区间 [l,r] 内萌数的个数,其中萌数定义为数位中存在长度至少为 2 的回文子串的数字. 题解:l, r 都是 1000 位级别的数字,显然是一道数位 dp 的题目,暴力直接去世. 发现 ...
- 【洛谷P1490】买蛋糕
题目大意:给定一个正整数 N,求至少从 [1,N] 中选出多少个数能够表示出 [1,N] 中的所有整数,每个数只能被选 1 次,并求出对于最优解有多少种不同的选择方案. 题解:好题. 仅考虑用最少的不 ...