zoukankan      html  css  js  c++  java
  • Java继承

    使用extends关键字表示继承。

    Java只能单继承;

    Java可以多层继承;子类可以访问父类的父类的公有成员;

    子类不能直接访问父类的私有成员变量,可以通过getset方法读写;

    package com.jike.extendsDemo;
    
    class People{
    	private int age;
    	public void setAge(int age) {
    	this.age=age;
    	}
    	public int getAge() {
    		return age;
    	}
    }
    class Worker extends People{
    	public void tell() {
    		System.out.println(getAge());
    	}
    }
    public class test01 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Worker worker=new Worker();
    		worker.setAge(20);;
    		worker.tell();
    	}
    
    }
    

     输出:

    20
    

    在子类对象实例化之前,必须先调用父类中的构造方法,之后调用子类构造方法。

    package com.jike.extendsDemo;
    class Father{
    	private int age;
    	private String name;
    	public Father() {
    		System.out.println("父类构造方法");
    	}
    }
    class Son extends Father{
    	public Son() {
    		System.out.println("子类构造方法");
    	}
    }
    public class test02 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Son son=new Son();
    	}
    }
    

     输出:

    父类构造方法
    子类构造方法
    

    子类中可以重写父类中的方法,重写定义:子类的方法和父类的方法名相同、参数相同、返回值类型相同。

    package com.jike.extendsDemo;
    class A{
    	public void tell() {
    		System.out.println("我是tell方法");
    	}
    
    }
    class B extends A{
    	public void tell() {	//重写父类中的方法
    		System.out.println("重写tell方法");
    	}
    }
    
    public class test03 {
    	public static void main (String[] args) {
    		B b=new B();
    		b.tell();
    	}
    }
    

     输出:

    重写tell方法
    

     并没有执行父类中的tell方法。

    使用super关键字可以在子类的方法中执行父类的方法。

    super:强行调用父类的方法的执行。

    package com.jike.extendsDemo;
    class A{
    	public void tell() {
    		System.out.println("我是tell方法");
    	}
    
    }
    class B extends A{
    	public void tell() {	//重写父类中的方法
    		super.tell();
    		System.out.println("重写tell方法");
    	}
    }
    
    public class test03 {
    	public static void main (String[] args) {
    		B b=new B();
    		b.tell();
    	}
    }
    

     输出:

    我是tell方法
    重写tell方法
    

     执行了父类中的tell方法。

    被子类重写的方法不能拥有比父类方法更加严格的访问权限。(一般父类与子类重写方法的访问权限相同)

    三种权限:private<default<public

    例如:如果父类的方法是default类型的,那么子类中重写的方法只能是default或者public类型。


    重写与重载的区别:

  • 相关阅读:
    网络故障排除工具 | 快速定位网络故障
    Brocade博科光纤交换机zone配置
    博科Brocade 300光纤交换机配置zone教程
    游戏开发
    第8章 图
    第7章 二叉树
    第6章 树型结构
    第5章 递归
    第4章 字符串、数组和特殊矩阵
    第3章 顺序表的链式存储
  • 原文地址:https://www.cnblogs.com/zhhy236400/p/10442120.html
Copyright © 2011-2022 走看看