继承
关键字:extends
例如:父类:学生
子类:大学生、中学生、小学生
格式:
public class 子类名 extends 父类名{
}
继承范围
子类可以从父类中继承父类的属性、方法。
但不同情况下可调用的属性收到了访问权限的限制。
访问权限修饰符:
public:在该项目中可调用
private:仅可在该类中使用
protected:可在同包下、不同包下的子类中使用
缺省的:仅可在同包下使用
继承关系存在前提
子类中可以写与父类方法一致的方法
一般情况下,要求子类中除方法体(方法的具体内容)之外的一切与父类一致
子类以及子类对象会优先调用重写之后的方法
(继承父类,然后扩展父类方法的功能)
例如:
父类:动物吃食物
子类:老虎吃食物
子类:牛吃草
*********************************************ps:检查重写是否正确:
************************************************注解:@Override //重写检查
转型
对象:学生、男性、爱吃
对象名:同一时刻编译只能具备一种类型
//自动转型,子类对象可以自动转型为父类类型
**A a = new B;//B必须是A的子类**
自动转型与强制转型
向上转型:自动转型
安全,自动转型之后的变量不能调用子类独有的方法属性
向下转型:强制转型
不安全,(ps注意哪里来的才能强制转型回哪里)
对象原本的实际类型是什么,不能只看对象名属性的类型
int i = (int)1.2 --->i=1 0.2被吃了
例如:
父类:A
子类:B、C
B--》A向上转型、自动转型后A--》B属于强制转型,但他属于从哪来回哪去
B--》A后A--》C是错误的,会显示类型转型异常
*****如何保证安全的强制转型?*****
先比较对象是否是这一类型,在想着一类型转型。
关键字:instanceof
if(anobject instanceof String){
String anotherString = (String)anobject;
}
测试用代码
package com.zyd0922;
import org.w3c.dom.ls.LSOutput;
import java.sql.SQLOutput;
public class Student {
public String name;
private int id;
protected String adr;
int age;
public void study() {
System.out.println("父类的学习方法!!");
}
}
package com.zyd0922;
import javax.print.attribute.standard.PrinterInfo;
public class UNstudent extends Student {
public void printInfo(){
System.out.println("name:"+name);
System.out.println("adr"+adr);
System.out.println("age"+age);
}
public void study(){
System.out.println("这是子类的学习方法UNstudent");
}
}
```java
package com.zyd0922;
public class youngerStudent {
public static void main(String[] args) {
UNstudent unstu1 = new UNstudent();
unstu1.name = "";
unstu1.adr = "";
unstu1.age = 1;
unstu1.printInfo();
unstu1.study();
Student stu = new Student();
stu.study();
}
}
package com.zyd0923;
import com.zyd0922.Student;
public class MidStudent extends Student {
public void printInfo(){
System.out.println("name:"+name);
System.out.println("adr"+adr);
}
public void study() {
System.out.println("非同包子类的学习方法!!");
}
}
package com.zyd0923;
import com.zyd0922.Student;
import com.zyd0922.UNstudent;
public class Teacher {
public static void main(String[] args) {
Student teacher = new Student();
System.out.println("name:"+teacher.name);
UNstudent unstu = new UNstudent();
System.out.println("name:"+unstu.name);
}
}