JAVA中的继承


-子类继承父类的共享方法,父类中的private方法不能被共享
	--在同一个包中,protected修饰的方法也可以被继承,类成员如果不加任何修饰限定词,默认的是包访问权限,也可以继承这类方法。

--继承的一般规则是:将所有的数据成员设定为private,所有方法设定为public(一般规则)

package animal;

public class Animal {

	private String name;
	private String sex;
	private int age;
	
	public Animal(String name,String sex,int age) {
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public void voice() {
		System.out.println("I am an Animal so i can voice.");
	}
	@SuppressWarnings("unused")
	private void make() {//私有
		System.out.println("I can make.");
	}
	void say() {//默认
		System.out.println("Hello");
	}
	protected void run() {
		System.out.println("I can run.");
	}
}

同一个包(package)0中

package animal;


public class Bird extends Animal{


	public Bird(String name,String sex,int age) {
		super(name,sex,age);
	}
	protected void run(String str) {
		System.out.println("I can not only run but fly"+str);
	}
	
	public static void main(String []args) {
		//new Animal("Angel","boy",1);
		Bird b = new Bird("Angel","boy",1);
		System.out.println(b.getName());
		//b.make(); The method make() from the type Animal is not visible
		b.say();//默认 可以
		b.run();//protected 可以
		//
	}
}
Bird中可以重写Animal中方法,但是重写过程中方法名、参数类型、返回值、类型都不能改变;

参数类型、数目、顺序改变是重载,这时候Bird中(例如上面的run方法)存在两个run方法,一个是继承来的,一个是自己写的

在不同的包中;

package people;

import animal.Animal;
//同类》同包》子类》外部包
public class Woman {

	//代理模式
	Animal a = new Animal(null, null, 0);
	public Woman() {
	}
	
	//默认修饰和protected修饰的方法在外部包中不能访问。protected外部包中的子类可以,默认(default)都不可以。
	public void run() {
		//a.run(); 编译报错:not visible 在其他包中,protected 修饰的方法不可见,同类、同包可以,子类、其他类不可以。
	}
	public void say() {
		//a.say(); 编译报错
	}
}

package people;

import animal.Animal;

public class Man extends Animal{

	public Man(String name, String sex, int age) {
		super(name, sex, age);
	}

	@Override
	public String getName() {
		// TODO Auto-generated method stub
		return super.getName();
	}

	@Override
	public void setName(String name) {
		// TODO Auto-generated method stub
		super.setName(name);
	}

	@Override
	public String getSex() {
		// TODO Auto-generated method stub
		return super.getSex();
	}

	@Override
	public void setSex(String sex) {
		// TODO Auto-generated method stub
		super.setSex(sex);
	}

	@Override
	public int getAge() {
		// TODO Auto-generated method stub
		return super.getAge();
	}

	@Override
	public void setAge(int age) {
		// TODO Auto-generated method stub
		super.setAge(age);
	}

	@Override
	public void voice() {
		// TODO Auto-generated method stub
		super.voice();
	}

	@Override
	protected void run() {
		//private和默认修饰的不能
		super.run();
	}
	

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值