继承
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天的学习计划并没有按时完成。周六进行的小组考核,虽然考的还行,但是还有很多不足,写代码的能力以及进制转换,逻辑运算以及一些概念掌握的并不牢固。在下周争取赶上学习进度,并且把基本概念掌握牢固