java中继承、重写、抽象类、抽象⽅法、多态的学习0.复习:
0.1 静态:
1.静态成员变量:作为数据 被所有对象共享 属于类的
2.静态成员⽅法:⼯具
3.静态代码块: 初始化数据
0.2 ⼯具类:
1.Arrays:
1.1 toString:将数组转换成字符串
例如{1,2,3} [1,2,3]
1.2.sort:排序
2.Math:
il :向上取整
2.2floor: 向下取整
2.3min: 最⼩值
2. 4.max: 最⼤值
0.3继承:
继承:抽取共性 代码复⽤
使⽤继承的场景: ⼦类 is a ⽗类
继承关系的注意事项:
1.⽗⼦类中的变量没有重名:⽗类⽤⾃⼰的,⼦类没有⽹上
2 .⽗⼦类有个重名的变量:⽗类访问⾃⼰的,⼦类优先访问⾃⼰的,如果没有则⽹上
3. 直接访问:⼦类 ⼦类对象 = ⼦类() (等号左边是谁调⽤的变量就是谁的)
4. 间接访问:⽅法是谁的 ⽅法中访问的变量就是谁的
1.1今⽇单词:
override重写覆盖
Annotation 注解
abstract 抽象
1.2学习⽬标:
1.3课堂笔记:
1.继承中重名:
package openBook;
public class Fu {
java重写和重载的区别int number;
public void show() {
System.out.println(number);//省略了this
//System.out.println(this.number);
}
}
package openBook;
public class zi extends Fu {
int number;
}
package openBook;
public class Test {
public static void main(String[]args) {
Fu fu=new Fu();
fu.number=100;//等号左边的类是谁调⽤的就是谁的变量
zi  z=new zi();
z.number=200;//等号左边的类是谁调⽤的就是谁的变量
//间接访问⽅法是谁的⽅法中访问的变量就是谁的
fu.show();//show 是⽗类的      show中访问的number是⽗类的
z.show();//show是⽗类的        show中访问的number是⽗类的  (⽅法是谁的变量就是谁的如果没有变量则不到⼦)    }
}
```
2.三个重名:
局部变量
成员变量
⼦类变量 this.⼦类变量
⽗类变量 super.⽗类变量
3.切⽔果案例:
第⼀版本 :
抽象类:⽔果 武器类(main)
切开 切割
第⼆版本:
1.切苹果 切开 产⽣⽩⾊的特效并加3分
2.切西⽠ 切开 产⽣红⾊的特效加5分
3.切菠萝 切开 产⽣黄⾊的特效 加10分
第三个版本:
更新: 加⼀个⽔果 产⽣特效中加彩⾊特效
芒果
继承:覆盖重写(重写)
重写:存在⽗⼦类中 ⽅法名相同 参数列表相同
重载:存在同类中 ⽅法名相同 参数列表不相同
```java
package openBook;
public class Test {
public static void main(String[]args) {
Fu fu=new Fu();
fu.number=100;//等号左边的类是谁调⽤的就是谁的变量
//多态:1.⽗类引⽤指向⼦类对象
//2.存在重写
zi  z=new zi();
z.number=200;//等号左边的类是谁调⽤的就是谁的变量
//间接访问⽅法是谁的⽅法中访问的变量就是谁的
fu.show();//show 是⽗类的      show中访问的number是⽗类的
z.show();//show是⽗类的        show中访问的number是⽗类的  (⽅法是谁的变量就是谁的如果没有变量则不到⼦)    Apple apple=new Apple();//⼦类完成功能
qieGe(apple);
apple.cut();
Orange orange=new Orange();
qieGe(orange);
orange.cut();
//覆盖重写的作⽤:复⽤⽗类的功能⽅法统⼀
//继承是重写的前提重写是多态的前提
}
//Fruit f=new Apple()
public static void qieGe(Fruit f) {
f.cut();
}
}
```
4.覆盖重写的注意事项:
```java
package openBook;
/**
*
*
继承中的注意事项
1.重写对返回值的要求 ⼦类⽅法的返回值必须⼩于等于⽗类⽅法的返回值
⼦类《=⽗类
String Object
object object
object String 报错
String String
前提 ⽗类》⼦类
Object 万类之祖 所有类都继承⼦Object Object>所有类
Object>String
2.重写⽅法的权限(访问修饰符)的要求
⼦类⽅法的权限必须⼤于等于⽗类⽅法的权限
⽗类可以访问 ⼦类不能访问
public(公开的) >protected(保护的)>default(什么都不写)> private(私有的)(⼉⼦不可以访问)@author lenovo
*protected(保护)⼦类可以访问 外部可以访问
*public 所有的类都可以
*protected ⾃⼰包的类才可以
*private 只有⾃⼰类可以
*/
public class Fruit {
String name;
//public object cut(){
//return new Object();匿名对象
//保证语法的正确性
//}
//}
public void cut() {
System.out.println("经过很复杂的切割算法,切开了,美滋滋");
if(name=="苹果") {
System.out.println("⽩⾊特效");
System.out.println("加3分");
}else if(name=="西⽠") {
System.out.println("红⾊特效");
System.out.println("加5分");
}
//⾯向对象设计原则:
//开闭原则:对拓展开放对修改关闭
/
/破坏封装性:封装性(将⼀个功能单独放到⼀个模块中)
}
}
```
5.构造函数的继承:
```java
package ExtendsDemo3;
/**
1.创建⼦类对象的时候 会先调⽤⽗类的构造函数 如果⽗类没有⽆参的 需要super显⽰调⽤
2.不能调⽤多次构造函数 ⽗类的构造函数必须放在⼦类构造函数第⼀句
3.⼦类必须调⽤⽗类构造函数 如果不写 就会默认调⽤⽆参的
super和this关键⼦的⽤法
super的⽤法:
1.在类⽅法中 调⽤⽗类的成员变量
2.在⼦类⽅法中 调⽤⽗类的成员⽅法 覆盖重写
3.在⼦类⽅法中可以调⽤⽗类的构造函数super();
this的⽤法:
1.在本类⽅法中 调⽤本类的成员变量
2.在本类⽅法中 调⽤本类的成员⽅法
3.在本类中调⽤本类的重载构造⽅法
@author lenovo
*/
public class Zi extends Fu {
public Zi() {
this(10);//调⽤本类的构造⽅法
//作⽤:初始化构造函数的值
//super(10);
this.func();
// super(); // Constructor call must be the first statement  in a constructor 构造函数调⽤必须是构造函数中的第⼀个语句  //super(10);//显⽰调⽤⽗类构造函数不写会默认掉⽤⽆参的构造函数
System.out.println("⼦类的构造函数");
}
private void func() {
super.name="123";
}
public Zi(int a) {
}
}
```
6.抽象类和抽象⽅法:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。