158
技術社區[雲棲]
馬士兵J2SE-第三章-麵向對象-static、繼承、重寫、構造函數
static關鍵字 靜態成員變量
public class Cat{ private static int sid=0; private String name; int id; Cat(String name){ this.name=name; id=sid++; } public void info(){ System.out.println("My name is "+name+" No."+id); } public static void main(String[] args) { Cat tom=new Cat("tom"); tom.sid=100; Cat jack=new Cat("jack"); tom.info(); jack.info(); } }
輸出:
My name is tom No.0
My name is jack No.100
使用ECLIPSE ALT+SHIFT+S自動快速生成的代碼
類的繼承與權限控製
class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } class Student extends Person { private String school; public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } } public class test { public static void main(String[] args) { Student student = new Student(); student.setName("zzk"); student.setAge(23); student.setSchool("MIT"); System.out.println(student.getName()); System.out.println(student.getAge()); System.out.println(student.getSchool()); } }
zzk
23
MIT
重寫:
class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getInfo() { return "Name: "+name+"\n"+"age:"+age; } } class Student extends Person { private String school; public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } public String getInfo() { return "Name: "+getName()+"\nage"+getAge()+"\nschool:"+school; } } public class test { public static void main(String[] args) { Student student=new Student(); Person person=new Person(); person.setName("Tom"); person.setAge(28); student.setName("Jack"); student.setAge(23); student.setSchool("MIT"); System.out.println(person.getInfo()); System.out.println(student.getInfo()); } }
輸出:
Name: Tom
age:28
Name: Jack
age23
school:MIT
構造函數與一般成員函數在繼承中的區別
class A { protected void print(String s) { System.out.println(s); } A() {print("A()");}; public void f() {print("A:f()");}; } class test extends A { test() {print("B()");}; public void f() {print("B:f()");} public static void main(String[] args) { test b=new test(); b.f(); } }
輸出:
A()
B()
B:f()
構造方法調用
class Person { private String name; private String location; Person(String name) { this.name=name; location="beijing"; } Person(String name,String location) { this.name=name; this.location=location; } public String info() { return "name: "+name+" location: "+location; } } class Student extends Person { private String school; Student(String name,String school) { this(name,"beijing ",school); } Student(String n,String l,String school) { super(n,l); this.school=school; } public String info() { return super.info()+" school: "+school; } } public class test { public static void main(String[] ars) { Person p1=new Person("A"); Person p2=new Person("B","shanghai"); Student s1=new Student("C","S1"); Student s2=new Student("C","shanghai","S2"); System.out.println(p1.info()); System.out.println(p2.info()); System.out.println(s1.info()); System.out.println(s2.info()); } }
輸出:
name: A location: beijing
name: B location: shanghai
name: C location: beijing school: S1
name: C location: shanghai school: S2
//構造Teacher類,繼承Person類 //增加“職稱”(String)屬性 //具有和Student類類似的重載構造方法 //重寫Person類的info()方法,增加“職稱”信息 class Person { private String name; private String location; Person(String name) { this.name=name; location="beijing"; } Person(String name,String location) { this.name=name; this.location=location; } public String info() { return "name: "+name+" location: "+location; } } class Teacher extends Person { private String profession; Teacher(String name,String profession) { this(name,"beijing",profession); } Teacher(String n,String l,String profession) { super(n,l); this.profession=profession; } public String info() { return super.info()+" profession: "+profession; } } class Student extends Person { private String school; Student(String name,String school) { this(name,"beijing ",school); } Student(String n,String l,String school) { super(n,l); this.school=school; } public String info() { return super.info()+" school: "+school; } } public class test { public static void main(String[] ars) { Person p1=new Person("A"); Person p2=new Person("B","shanghai"); Student s1=new Student("C","S1"); Student s2=new Student("C","shanghai","S2"); Teacher t1=new Teacher("D","phd"); Teacher t2=new Teacher("D","haerbin","doc"); System.out.println(p1.info()); System.out.println(p2.info()); System.out.println(s1.info()); System.out.println(s2.info()); System.out.println(t1.info()); System.out.println(t2.info()); } }輸出:
name: A location: beijing
name: B location: shanghai
name: C location: beijing school: S1
name: C location: shanghai school: S2
name: D location: beijing profession: phd
name: D location: haerbin profession: doc
最後更新:2017-04-02 06:52:05