一。ExtendsDemo01
package day23;
import com.sun.org.apache.bcel.internal.generic.FDIV;
public class ExtendsDemo01 {
public static void main(String[] args) {
Son s = new Son();
s.test(30);
}
}
class Father {
int a = 10;
}
class Son extends Father{
int a = 20; // 子类有父类的同名属性变量
public void test(int a){
// 局部变量 先找函数中的变量a 如果没有 再找当前类的变量a
// 如果也没有 直接找他父类的变量
System.out.println(a); // 10 20 30
// 对象的变量 如果没有也是找父类的变量
System.out.println(this.a); // 10 20 20
// 直接找父类的变量
System.out.println(super.a); // 10 10 10
}
}
二。ExtendDemo02
package day23;
public class ExtendDemo02 {
public static void main(String[] args) {
Son02 s2 = new Son02();
s2.test();
}
}
class Father02{
public void method(){ // 成员方法
System.out.println("aa");
}
}
class Son02 extends Father02{
public void method(){ // 重写(重载)父类的同名方法
System.out.println("bb");
}
public void test(){
method(); // aa bb
this.method(); //aa bb
super.method(); //aa aa
}
}
三。FinalDemo01
ackage day23;
final class Fu{} // 没有后代 太监类
//class Son extends Fu{} 不能继承 final修饰的类
public class FinalDemo01 {
public static void main(String[] args) {
}
}
四。FinalDemo02
package day23;
class Cao{
public final void method(){ // final 表示这个方法不能被重载
System.out.println("aa");
}
}
class Pei extends Cao{
// public void method(){} 重载父类的final方法 报错
}
public class FinalDemo02 {
public static void main(String[] args) {
}
}
五。 FinalDemo03
package day23;
public class FinalDemo03 {
public static void main(String[] args) {
final int MIN_SCORE = 0; // 最小分数 常量 不可以被更改的量
final int MAX_SCORE = 100; // 最大分数
Chinese c = new Chinese(); // 使用的是无参数的构造方法
// System.out.println(c.getCARDID()); // 001
// System.out.println(c.getBLOODTYPE()); // AB
// System.out.println(c.getCountry()); // 中华人民共和国
// System.out.println(c.getName()); // null
c.setName("易明洁");
System.out.println(c.getInfo());
}
}
class Chinese{
public static final String COUNTRY = "中华人民共和国"; // 静态常量
public final String BLOODTYPE = "AB";
// 不显性赋值 报错 如果硬要写 必须在初始化中给他一个初始值
public final String CARDID;
public String name; // 实例变量 对象变量
public Chinese(String cardID, String name){ // 有参数的构造方法
super();
this.CARDID = cardID; // 常量在这里赋值 也是可以的
this.name = name;
}
public Chinese(){ // 无参数的构造方法
super();
this.CARDID = "001";
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String getCountry(){
return COUNTRY;
}
public String getBLOODTYPE() {
return BLOODTYPE;
}
public String getCARDID() {
return CARDID;
}
public String getInfo(){
return "国家:" + getCountry() + ", 身份证号:" + getCARDID() +
", 血型:" + getBLOODTYPE() + ", 姓名:" + getName();
}
}