JAVA面对对象(二)——继承、方法的覆写

1.继承就是基于已存在的类构造一个新类,继承已存在的类就能复用类的方法和属性,并且能够添加新的方法和属性。也就是子类和父类

2.一个父类可以拥有多个子类,一个子类只允许有一个父类

3.用extends关键字表示一个类继承自另一个类

1 class A{ }  //父类或基类
2 class B extends A { }  //B是A的子类
3 class C extends B { }  //C是B的子类,可以直接复用A的属性和方法

4.一切类的祖先是Object类

5.如果子类中的一个方法,其名称、返回类型以及参数列表和父类中的某个方法一样,那么可以说子类的方法重写了父类的方法

6.重写父类方法时不可降低方法的访问权限

7.重写了父类方法后要调用被重写的方法,可在子类方法中使用super.被重写的方法()

8.子类不继承父类的构造方法,子类的构造方法必须调用父类的构造方法,如果子类没有显式的调用父类构造方法,系统默认调用无参数的构造方法,相当于省略了super();语句

9.子类构造方法中使用super()调用父类构造方法,不必须作为子类构造方法的第一条语句

10.子类在实例化时先调用父类构造方法,后调用子类构造方法

复制代码
 1 //父类
 2 public class Inherit1 {
 3     private String name;//私有属性
 4     private String sex;    
 5     //根据属性生成构造方法
 6     public Inherit1(String name, String sex) {
 7         this.name = name;
 8         this.sex = sex;
 9     }
10     public void hello(){
11         System.out.println("我叫:"+name+"我是:"+sex+"孩!");
12     }
13 }
14 //子类
15 public class Inherit2 extends Inherit1{  
16     public Inherit2(String name,String sex) {
17         //调用父类的构造方法
18         super(name,sex);
19     }
20     public void hello(){
21         System.out.println("我是新来的!");
22         super.hello();//调用父类方法
23     }
24 }
复制代码

 11.在实例化子类对象时,先调用父类构造方法,在调用子类构造方法;(就好比要先有父亲才会有儿子),可从以下例子看出

复制代码
 1 public class Person {
 2     private String name;
 3     private int age;
 4     public Person() {        
 5         System.out.println("父类构造方法");
 6     }
 7     public String getName() {   //取得name属性
 8         return name;
 9     }
10     public void setName(String name) {  //设置name属性
11         this.name = name;
12     }
13     public int getAge() {
14         return age;
15     }
16     public void setAge(int age) {
17         this.age = age;
18     }    
19     }
20 
21 public class Student extends Person{
22     private String school;
23     public Student() {
24         System.out.println("子类构造方法");
25     }
26     public String getSchool() {
27         return school;
28     }
29     public void setSchool(String school) {
30         this.school = school;
31     }
32 
33 public class Demo {
34     public static void main(String[] args) {
35         Student stu = new Student();
36         stu.setName("张三");
37         stu.setAge(23);
38         stu.setSchool("云南大学");
39         System.out.println("姓名:"+stu.getName()+"年龄:"+stu.getAge()+"学校:"+stu.getSchool());
40     }
41 }

运行结果:
父类构造方法
子类构造方法
姓名:张三年龄:23学校:云南大学
复制代码

 

方法的覆写

所谓方法的覆写就是在子类中定义了与父类同名的方法,但是在方法覆写是必须考虑权限问题,即被子类覆写的方法不能有比父类更加严格的访问权限

(即:private、default、public;这三种访问权限的大小关系private<default<public)

所以父类中定义的方法是public,子类覆写的方法也必须是public

复制代码
 1 class Person{
 2     void print(){    //定义一个默认访问权限的方法
 3         System.out.println("父亲的方法");
 4     }
 5 }
 6 class Student extends Person{
 7     public void print() {            //覆写父类方法,扩大访问权限public
 8         System.out.println("儿子覆写过的方法");
 9     }
10 }
11 public class Demo{
12     public static void main(String[] args) {
13         new Student().print();
14     }
15 }

运行结果:
儿子覆写过的方法
复制代码

 与方法的覆写还有一个相似的是属性的覆盖

复制代码
 1 class Person{
 2     public String info = "ABC";
 3 }
 4 class Student extends Person{
 5     public String info = "UFO";
 6     public void print() {        
 7         System.out.println("父类中的属性:"+super.info);//访问父类中的info属性
 8         System.out.println("子类中的属性:"+this.info);//访问子类中的info属性
 9     }
10 }
11 public class Demo{
12     public static void main(String[] args) {
13         new Student().print();
14     }
15 }

运行结果:
父类中的属性:ABC
子类中的属性:UFO
 
复制代码

 

posted @   Louis_Max  阅读(641)  评论(0)    收藏  举报
努力加载评论中...

IP地址位置数据由纯真CZ88提供支持

点击右上角即可分享
微信分享提示