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类型。


    重写与重载的区别:

  • 相关阅读:
    Xshell的一些使用方法和注意事项
    adobe premiere pro cc2015.0已停止工作 解决办法
    视频播放效果--video.js播放mp4文件
    centos 7.0 编译安装php 7.0.3
    centos 7.0 安装nginx 1.9.10
    centos 7.0 firewall 防火墙常用命令
    webstorm 更改默认服务器端口
    css3 动画效果 定义和绑定执行
    css 图片垂直居中总结
    JS 面向对象随笔
  • 原文地址:https://www.cnblogs.com/zhhy236400/p/10442120.html
Copyright © 2011-2022 走看看