本文共 8195 字,大约阅读时间需要 27 分钟。
class Person{ private String name ; private int age ; public void setName(String name){ this.name = name ; } public void setAge(int age){ this.age = age ; } public String getName(){ return this.name ; } public int getAge(){ return this.age ; } }; class Student{ private String name ; private int age ; private String school ; public void setName(String name){ this.name = name ; } public void setAge(int age){ this.age = age ; } public void setSchool(String school){ this.school = school ; } public String getName(){ return this.name ; } public int getAge(){ return this.age ; } public String getSchool(){ return this.school ; } }; |
class Person{ private String name ; private int age ; public void setName(String name){ this.name = name ; } public void setAge(int age){ this.age = age ; } public String getName(){ return this.name ; } public int getAge(){ return this.age ; } }; class Student extends Person{ // 如果什么都不定义的话,至少包含四个方法 }; public class Demo02{ public static void main(String args[]){ Student stu = new Student() ; stu.setName(" 张三 ") ; stu.setAge(30) ; System.out.println(" 姓名: "+stu.getName()+" ,年龄: "+stu.getAge()) ; } }; |
class Person{ private String name ; private int age ; public void setName(String name){ this.name = name ; } public void setAge(int age){ this.age = age ; } public String getName(){ return this.name ; } public int getAge(){ return this.age ; } }; class Student extends Person{ // 如果什么都不定义的话,至少包含四个方法 private String school ; public void setSchool(String school){ this.school = school ; } public String getSchool(){ return this.school ; } }; public class Demo03{ public static void main(String args[]){ Student stu = new Student() ; stu.setName(" 张三 ") ; stu.setAge(30) ; // 此为子类自己的方法 stu.setSchool(" 北京大学 ") ; System.out.println(" 姓名: "+stu.getName()+" ,年龄: "+stu.getAge()+" ,学校: "+stu.getSchool()) ; } }; |
class Person{ private String name ; private int age ; public Person(){ System.out.println("**************************") ; } public Person(String name,int age){ this.name = name ; this.age = age ; } public void setName(String name){ this.name = name ; } public void setAge(int age){ this.age = age ; } public String getName(){ return this.name ; } public int getAge(){ return this.age ; } public String getInfo(){ return " 姓名: "+this.name+" ,年龄: "+this.age ; } }; class Student extends Person{ // 如果什么都不定义的话,至少包含四个方法 private String school ; public Student(){ System.out.println("---------------------------") ; } public void setSchool(String school){ this.school = school ; } public String getSchool(){ return this.school ; } }; public class Demo05{ public static void main(String args[]){ new Student() ; } }; |
public Student(){ // 此处实际上默认隐含了一个 super() ,表示调用父类中的无参构造方法 super() ; System.out.println("---------------------------") ; } |
class Person{ private String name ; private int age ; public Person(){ System.out.println("**************************") ; } public Person(String name,int age){ this.name = name ; this.age = age ; } public void setName(String name){ this.name = name ; } public void setAge(int age){ this.age = age ; } public String getName(){ return this.name ; } public int getAge(){ return this.age ; } public String getInfo(){ return " 姓名: "+this.name+" ,年龄: "+this.age ; } }; class Student extends Person{ // 如果什么都不定义的话,至少包含四个方法 private String school ; public Student(){ // 此处实际上默认隐含了一个 super() ,表示调用父类中的无参构造方法 super() ; System.out.println("---------------------------") ; } public void setSchool(String school){ this.school = school ; } public String getSchool(){ return this.school ; } public String getStuInfo(){ return " 姓名: "+getName()+" ,年龄: "+getAge()+" ,学校: "+this.school ; } }; public class Demo06{ public static void main(String args[]){ Student stu = new Student() ; stu.setName(" 张三 ") ; stu.setAge(30) ; stu.setSchool(" 北京大学 ") ; System.out.println(stu.getStuInfo()) ; } }; |
public String getInfo(){ return " 姓名: "+this.name+" ,年龄: "+this.age ; } |
public String getStuInfo(){ return " 姓名: "+getName()+" ,年龄: "+getAge()+" ,学校: "+this.school ; } |
class A{ public void fun(){ System.out.println("Hello") ; } }; class B extends A{ // 此处定义了一个与父类中方法名称相同的方法 // 所以此时称为方法的覆写 public void fun(){ System.out.println("World!!!") ; } }; public class Demo07{ public static void main(String args[]){ B b = new B() ; b.fun() ; } }; |
class Person{ private String name ; private int age ; public Person(){ System.out.println("**************************") ; } public Person(String name,int age){ this.name = name ; this.age = age ; } public void setName(String name){ this.name = name ; } public void setAge(int age){ this.age = age ; } public String getName(){ return this.name ; } public int getAge(){ return this.age ; } public String getInfo(){ return " 姓名: "+this.name+" ,年龄: "+this.age ; } }; class Student extends Person{ // 如果什么都不定义的话,至少包含四个方法 private String school ; public Student(){ // 此处实际上默认隐含了一个 super() ,表示调用父类中的无参构造方法 super() ; System.out.println("---------------------------") ; } public void setSchool(String school){ this.school = school ; } public String getSchool(){ return this.school ; } public String getInfo(){ return super.getInfo()+" ,学校: "+this.school ; } }; public class Demo08{ public static void main(String args[]){ Student stu = new Student() ; stu.setName(" 张三 ") ; stu.setAge(30) ; stu.setSchool(" 北京大学 ") ; System.out.println(stu.getInfo()) ; } }; |
区别点 | 方法的覆写 | 方法的重载 |
概念上 | 方法名称相同,参数的类型或个数相同 | 方法名称相同,参数的类型或个数不同 |
范围 | 继承关系之中 | 发生在一个类中 |
特殊要求 | 覆写的时候被子类覆写的方法不能用有比父类更严格的访问权限 | - |
class Demo{ private void fun(){ System.out.println("HELLO") ; } public void test(){ fun() ; } }; class SDemo extends Demo{ // 实际上此时是在本类中新定义了一个方法 void fun(){ System.out.println("hello") ; } }; public class Demo12{ public static void main(String args[]){ SDemo sd = new SDemo() ; sd.test() ; } }; |
class Demo{ public Demo(){ System.out.println(" 父类中的无参构造。 ") ; } public Demo(String name){ System.out.println(" 父类中有一个参数的构造。 ") ; } }; class SDemo extends Demo{ public SDemo(){ super() ; } public SDemo(String name){ super(name) ; } }; public class Demo09{ public static void main(String args[]){ SDemo sd = new SDemo("zhangsan") ; } }; |
class Demo{ public Demo(){ System.out.println(" 父类中的无参构造。 ") ; } public Demo(String name){ System.out.println(" 父类中有一个参数的构造。 ") ; } public void fun(){ System.out.println(" 父类中的方法。。。 ") ; } }; class SDemo extends Demo{ public SDemo(){ super() ; } public SDemo(String name){ super(name) ; } public void fun(){ super.fun() ; System.out.println(" 子类中的方法。。。 ") ; } }; public class Demo10{ public static void main(String args[]){ SDemo sd = new SDemo("zhangsan") ; sd.fun() ; } }; |
class Demo{ public String name = "HELLO" ; }; class SDemo extends Demo{ public String name = "hello" ; public void fun(){ System.out.println(super.name) ; System.out.println(name) ; } }; public class Demo11{ public static void main(String args[]){ SDemo sd = new SDemo() ; sd.fun() ; } }; |
区别 | super | this |
范围 | 从子类找到父类中的内容 | 直接找到本类中的内容 |
属性 | 直接找到父类中的指定属性,不在子类中找 | 如果在本类中找到了属性,则使用,如果没有找到,则会从父类中找此属性 |
方法 | 直接调用父类中的方法 | 如果本类中有就调用,如果没有就找父类中的方法 |
构造 | 在子类构造方法的首行调用,表示调用父类中的构造。子类中至少有一个构造方法可以调父类构造 | 表示直接调用本类中的其他构造方法,但至少有一个构造方法是没有 this() 的,作为出口 |
特殊 | - | this 表示当前对象 |