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表示当前对象 |