第五周学习总结&实验报告(三)
第五周学习总结&实验报告(三)
这一周又学习了新的知识点——继承。
一、继承的基本概念是:
*定义一个类,在接下来所定义的类里面如果定义的属性与第一个类里面所拥有的属性一样,那么我们在此就不需要重复定义,直接通过关键词“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子句的使用. 掌握自定义异 ...
随机推荐
- javascript高级程序设计读书笔记-事件(一)
读书笔记,写的很乱 事件处理程序 事件处理程序分为三种: 1.html事件2. DOM0级,3,DOM2级别 没有DOM1 同样的事件 DOM0会顶掉html事件 因为他们都是属性 而 ...
- Struts2对于BigDecimal类型的转换问题
Struts2对常用的数据类型如String.Integer.Double等都添加了转换器进行对应的转换操作. BigDecimal其实也算作是一种常用的数据类型,但Struts2没有对该类型设置转换 ...
- 转载MySQL面试题
1.MySQL的复制原理以及流程 (1).复制基本原理流程 主:binlog线程--记录下所有改变了数据库数据的语句,放进master上的binlog中: 从:io线程--在使用start slave ...
- HTTPS到底是什么
Http存在的问题 上过网的朋友都知道,网络是非常不安全的.尤其是公共场所很多免费的wifi,或许只是攻击者的一个诱饵.还有大家平时喜欢用的万能钥匙,等等.那我们平时上网可能会存在哪些风险呢? ...
- 查询GC日志、动态年龄计算
https://www.cnblogs.com/onmyway20xx/p/6590603.html 从实际案例聊聊Java应用的GC优化 动态年龄计算 关于上文中提到晋升年龄阈值为2,很多同学有疑问 ...
- 安装与学习laravel
安装 composer cd /var/www/html curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/ ...
- Linux日常之数据重定向
Linux在启动后,会默认打开3个文件操作符,分别是 (1)标准输入0,standard input (2)正确输出1,standard output (3)错误输出2,standard error ...
- vscode remote-ssh 远程开发
https://www.jianshu.com/p/7fcd995a408d 连是连上了,但每隔几十秒就会断开重连,不知道是什么情况...
- Codeforces 990 调和级数路灯贪心暴力 DFS生成树两子树差调水 GCD树连通块暴力
A 水题 /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) using namespace ...
- python中导入from appium import webdriver时报错:ModuleNotFoundError: No module named 'appium'
1.检查一下有没有安装Appium-Python-Client,执行语句:pip install Appium-Python-Client进行安装 2.安装后,出现ModuleNotFoundErro ...