第五周学习总结&实验报告(三)
第五周学习总结&实验报告(三)
这一周又学习了新的知识点——继承。
一、继承的基本概念是:
*定义一个类,在接下来所定义的类里面如果定义的属性与第一个类里面所拥有的属性一样,那么我们在此就不需要重复定义,直接通过关键词“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子句的使用. 掌握自定义异 ...
随机推荐
- 运维ipvsadm配置负载均衡2
一.什么是lvs1.lvs的定义LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.是由章文嵩博士开发的一款开源软件,1998年5月发布,是中 ...
- vue学习【三】vue-router路由显示多页面
大家好,我是一叶,今天是七夕,单身狗的我还在这里写踩坑文.在这里还是要祝大家早日脱单(能不能脱单自己心里没个数吗).本篇继续踩坑,在单页面上展示多页的内容,大家的想法是什么,估计大家第一印象会是ifr ...
- 利用ab压力工具对服务器进行压力测试
假如我们需要对http://letv.com进行压力测试,指定请求总数为100,并发用户数为10,我们可以以下面的方式进行测试 $ ab -n 100 -c 10 http://letv.com/Th ...
- 60. Permutation Sequence (JAVA)
The set [1,2,3,...,n] contains a total of n! unique permutations. By listing and labeling all of the ...
- 关于PHP://input
$data = file_get_contents("php://input"); php://input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最好 ...
- [易学易懂系列|golang语言|零基础|快速入门|(四)]
今天开始,我们来写代码. 学习一门语言,最快的方式就是写代码,做项目. 别的学习教程,都是hello world. 我们就来点不一样的吧.我们不一样!不一样!不一样! 首先,打开VSCODE.( 关于 ...
- AngularJs 简单实现全选,多选操作(转)
代码如下: HTML: <section> <pre>{{choseArr}}</pre> 全选: <input type="checkbox&qu ...
- 【洛谷P2447】外星千足虫
题目大意:给定一个 M 个含 N 个未知数的异或方程组,保证有解,若存在唯一解,给出至少需要几个方程才能得出唯一解,若不存在,直接输出不存在. 题解:异或方程组也满足类似初等行变换的操作,只不过所有的 ...
- spring security基本知识(一)
spring security基本知识(一) Spring Security是为基于Spring的应用程序提供声明式安全保护的安全 性框架.Spring Security提供了完整的安全性解决方案,它 ...
- python设置图片背景和设置字体颜色大小
# -*- coding: utf-8 -*- """ Created on Wed Dec 11 22:37:30 2019 @author: Dell "& ...