所用教材:java核心卷(一)
第五章:继承关系
参考博客:https://www.runoob.com/java/java-override-overload.html
有时候我们定义一个学生类里面有属性值,走路方法,说话方法和学习方法,定义一个老师类里面有属性值,走路方法,说话方法和教书方法。此时属性值,走路方法,说话方法相当于重叠了,此时我们可以定义一个父类的人类包含学生类和教师类的共有属性,之后采用继承关系简化代码!
1.extends+父类
java里面一个子类只能有一个父类,被static修饰的方法不能被重写,声明为 final 的方法不能被重写。
class Animal{
public static void move(){
System.out.println("动物可以移动");
}
}
————————————————————
class Dog extends Animal{
public static void move(){
System.out.println("狗可以跑和走");
}
}
————————————————————
public class Tea {
public static void main(String args[]){
Animal a = new Animal(); // Animal 对象
Animal b = new Dog(); // Dog 对象
a.move();// 执行 Animal 类的方法
b.move();//执行 Dog 类的方法
}
}
输出的结果为:动物可以移动
动物可以移动
原因:因为被static修饰了所以不能重写。
2.方法的重写
即为extends之后将重名的方法{}中的输出内容进行了修改。
3.super关键字
4.
4.被final定义的不能继承,不能有子
5.强制类型转换:加上()eg:double x=3.405; int nx=(int)x;
6.instanceof(属于) 就是一个指向性的可以判断父子类之间关系
子类instanceof父类:true
父类instanceof子类:false
7.int 和integar类型的数据区别:
int和Integer的区别
1)、Integer是int的包装类,int则是java的一种基本数据类型 。
2)、Integer变量必须实例化后才能使用,而int变量不需要 。
3)、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 。
参考博客:
https://blog.csdn.net/qq_37358860/article/details/100149986
4)、Integer的默认值是null,int的默认值是0。
public class Tea {
public static void main(String args[]){
Integer a = 5;
int b = 5;
Integer c = new Integer(5);
Integer d = 5;
System.out.println(a.equals(b));
System.out.println(a == b);
System.out.println(a.equals(c));
System.out.println(a == c);
System.out.println(a == d);
}
}
返回结果:
true
true
true
false
true
8.==和equals的区别:
==我们知道是指的比较的两个对象的地址值,equals是object类里面的一个方法,但是equals方法会被重写。所以虽然equals方法实际也是比较的地址,但是重写了所以有时候比较String,integer的时候比较的是其中的值。对于基本类型的包装类型,比如Boolean、Character、Byte、Shot、Integer、Long、Float、Double等的引用变量,==是比较地址的,而equals是比较内容的。
9.基本数据类型包装:
除了int类型转换为Integer类型。char类型转换成character其他都是将首字母大写。
包装类是为了能够更好的用toString方法转换数据类型。
10.static
1),类属性中:我们都知道实例变量和类变量,实例变量用static修饰,类变量则为普通变量无static。实例变量可以直接类名.变量名进行调用而类变量却要新建对象才能调用。并且用static修饰的变量可以在类外面通过类名+变量名直接赋值,在每次调用的时候值都是相同。类变量在每次创建对象赋值的时候都可以赋予新类型的值。
2),类方法中:被static修饰的成员方法可以用类名.方法名直接调用。而不用static修饰的则要先创建对象再调用调用。
3),静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法。理解为static相当于公有。公有里面不能调用私有方法,私有方法却能调用statc修饰的公有方法。
4),在循环中静态代码块只执行一次,但非静态代码块却随着循环执行多次。
11.ArratList数组:有索引值,长度可以改变。
原因:有时候我们需要做增删改查的操作需要一个长度不固定的数组。
格式:ArrayList<保存的元素数据类型> ar=new ArrayList<>(100);//100为存储空间,也可以不填。
添加数据:ar.add(添加元素);ar.add(索引值,添加的元素);
删除元素:ar.remove(添加元素);ar.remove(索引值,添加的元素);
设置元素:ar.set(索引值,添加的元素);
返回索引处的值:ar.get(索引值);