学习总结(第三周)

继承

1.解释

Java中 提供一个关键字extends 用这个关键字可以让一个类与另一类建立继承关系

当类与类之间存在相同的内容,并满足子类是父类的一种(如学生是人)可以考虑用继承

public class Student extends Person{}
//Student 称为子类 Person为父类

2.继承后子类的特点

子类可以得到父类的属性和行为,子类可以使用

3.继承的特点

  • Java只支持单继承,不支持多继承,但支持多层继承
    可以单继承:一个子类只能继承一个父类
    不能多继承:子类不能同时继承多个父类
    多层继承:子类A继承父类,父类B可以继承父类C
  • 每一个类直接或间接的继承于object
    子类只能访问父类中非私有的成员

4.子类可以继承父类什么

在这里插入图片描述

5.成员方法的访问特点

直接调用满足就近原则
super调用:直接访问父类

public class Test
{
	public static void main(String[]args)
	{
		Student s=new Student();
	}
}

class Person
{
	public void eat(){System.out.println("干饭");}
	public void drink(){System.out.println("喝茶");}
	
}

class Student extends Person
{
	public void lunch()
	{
		this.eat();
		this.drink();//先在本类中查看eat 和 drink方法,有就调用子类,没有就调用从父类继承下来的
	}
}

6.方法的重写(覆盖继承过来的虚方法表)

1)定义

当父类的方法不能满足子类现在的需求时,需要进行方法重写
eg:父类喝茶,子类喝水

2)@Override 重写注解

@Override是放在重写后的方法上,检验子类重写时语法是否正确

3)注意事项和要求

重写方法的名称,形参列表必须和父类一致
子类重写父类方法时访问权限子类必须大于等于父类(空着不写<protected<public)
子类重写父类方法时,返回值类型子类必须小于等于父类
重写的方法尽量和父类保持一致
私有方法不能被重写
子类不能重写父类的静态方法,重写会报错

7.构造方法的访问特点

1)父类中的构造方法不会被子类继承,但可以通过super调用
2)子类中所有的构造方法默认先访问父类中的无参构造,再执行自己

8.如何调用父类构造方法

子类构造方法的第一行语句默认都是 super(),不写也存在,且必须在第一行
若调用父类的有参构造,必须手动写super进行调用

9.代码范例

(1)

public class test01
{
	public static void main(String[] args)
	{
		student s=new student("张三",18);
		System.out.println(s.name+" "+s.age);
	}
}


class person
{
	String name;
	int age;
	
	public person(String name,int age)
	{
		this.name=name;
		this.age=age;
	}
}


class student extends person
{

	public student(String name,int age)
	{   
	    super(name,age);
		
	}
}

(2)

public class test
{
	public static void main (String[]args)
	{
		manager m=new manager("101","zhangsan",40000,10000);
		System.out.println(m.getID()+" "+m.getName()+" "+m.getSalary()+"  "+m.getBonus());
		
		
		m.work();
		m.eat();
		cook c=new cook("102","lisi",5000);
		System.out.println(c.getID()+" "+c.getName()+" "+c.getSalary());
		c.work();
		c.eat();
		
	}
}

class manager extends employee
{
	private double bonus;
	
	public manager(String id,String name, double salary,double bonus){
		super(id,name, salary);
		this.bonus=bonus;
	}
	
	public double getBonus(){return bonus;}
	
	public void work()
	{
		System.out.println("管理其他人");
	}
	
}


class cook extends employee
{
	public void work()
	{
		System.out.println("炒菜");
	}
	
	//一开始没写出来的
	public cook(String id,String name,double salary)
	{
		super(id,name,salary) ;
		
	}
	  
}

字符串

String

1.不变性

字符串的内容是不会改变的

2.创建String对象的两种方式

1)直接赋值
String name="张三"
2)构造方法

在这里插入图片描述

3.字符串的比较

1)"=="比较的实质

基本数据类型比较的是数据值
引用数据类型比较的是地址值

2)equals和equalsIgnoreCase

equals:比较字符串的内容,完全一样结果才为true
格式 s1.equals(s2)
equalsIgnoreCase:忽略大小写进行比较

4.练习题

1)字符串的遍历
import java.util.Scanner;
public class 遍历字符串
{
	public static void main(String[]args)
	{
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个字符串");
		String str=sc.next();
		for(int i=0;i<str.length();i++)
		{
			char c=str.charAt(i);
			System.out.println(c);
		}
	}
}
2)统计字符个数
import java.util.Scanner;

public class Main02
{
	public static void main(String[]args)
	{
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一行字符");
		String str=sc.next();
		int smallCount=0;
		int bigCount=0;
		int numCount=0;
		int elseCount=0;
		for(int i=0;i<str.length();i++)
		{
			char c=str.charAt(i);
			if(c>'a'&&c<'z')
				smallCount++;
			else if(c>'A'&&c<'Z')
				bigCount++;
			else if(c>'0'&&c<'9')
				numCount++;
			else elseCount++;
		}
		System.out.println("小写字母有"+smallCount+"个");
		System.out.println("大写字母有"+bigCount+"个");
		System.out.println("数字有"+numCount+"个");
		System.out.println("其他有"+elseCount+"个");
	}
}

StringBuilder

1.解释

可以看做是一个容器,创建之后里面的内容是可变的

2.运用

1)构造方法

在这里插入图片描述

StringBuilder sb=new StringBuilder();//打印出来的是属性并非地址
StringBuilder sb =new StringBuilder("abc");


2)成员方法

在这里插入图片描述

代码范例
public class 添加反转
{
	public static void main(String[]args)
	{
		StringBuilder sb=new StringBuilder("abc");
		System.out.println(sb);
		//---------------
		sb.append(123);
		sb.append(true);
		System.out.println(sb);
		
		//----------------
	
		System.out.println(sb.length());
		
		//----------------
		
		sb.reverse();
		System.out.println(sb);
		
		//-----------------
		
		String str=sb.toString();
		System.out.println(str);
		
	}
}

结果
在这里插入图片描述

考试题总结

方法的重载和方法的重写

方法的重载:在同一个类中,方法名相同,方法参数类型和个数不同
方法的重写:在不同类中,方法参数列表,方法名相同,返回值类型子类小于等于父类

简述JDK,JRE,JVM 作用及三者关系。

JDK:是Java开发工具包,包含了JRE,Java工具和各种核心类库
JRE:是Java运行环境
JVM:是Java程序真正运行的地方
JDK包含JRE,JRE包含JVM

this和super

this:表示对当前对象的引用,可用于区分成员变量和局部变量,
可用来调用当前对象其他构造函数
super:表示对父类对象的引用,可用于访问父类的成员变量和方法
调用父类的构造方法

逻辑运算题

在这里插入图片描述
在这里插入图片描述

短路或运算符 若前一个语句为真,则后一个语句不执行
该题思路:因为语句为真,x值为1,再进行自减运算,则x为0
在条件语句中 y和z并不进行任何运算,包括自增和自减

本周总结

这周感觉自己整体学的东西并不多,而且学习进度也有所减缓,有所松懈。18天的学习计划并没有按时完成。周六进行的小组考核,虽然考的还行,但是还有很多不足,写代码的能力以及进制转换,逻辑运算以及一些概念掌握的并不牢固。在下周争取赶上学习进度,并且把基本概念掌握牢固

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值