java笔记(5)

继承与访问权限
对于class类的权限修饰只可以用public default
1.public 都可以访问;2.default(包权限)只有 同一个包下的内部的类可以访问;

class Person{
	private String name;
	private int age;
	
	public void setName(String name){
		this.name = name;
	}
	public void setAge(int age){
		this.age = age;
	}
	public String getName(){
		return this.name;
	}
	public int getAge(){
		return this.age;
	}
}
class Student extends Person {//继承父类的所有成员(成员属性,成员函数)
	private int grade;
	public void setGrade(int grade){
		this.grade = grade;
	}
	public int getGrade(){
		return this.grade;
	}
	public void test(){
		//System.out.println(age);//子类无法访问父类的私有变量
	}
}
public class PersonL {
	public static void main(String[] args){
		Student t = new Student();
		t.setName("lili");
		t.setAge(12);
		t.setGrade(1);
		System.out.println(t.getName());
		System.out.println(t.getAge());
		System.out.println(t.getGrade());
	}
}

在这里插入图片描述访问权限测试


class T{
	private int a = 0;//只在当前所在类中有效
			int b = 1;//default,
	protected int c = 2;
	public int d = 3;
	public void func(){
		a = 9;
	}
}
class TT extends T{
	public void fun(){
		//a = 10;
		//System.out.println(a);
		//当子类和父类在同一个包中,子类可继承除private限制的所有成员
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
		T t = new T();
		t.b = 9;//可以访问default,位于同一个包下面
		
	}
}
// 注:当子类的父类不在同一个包中,子类只能继承父类中public protected限制的成员
public class TestAccess{
	public static void main(String[] args){
		T m = new T();
		m.b = 10;
	}
}

注:当子类的父类不在同一个包中,子类只能继承父类中public protected限制的成员
方法的重写(重新实现)
copy方法的声明,对具体内容进行所谓的重写
重写的新方法的访问权限不能比原方法的更严格

super

//super是一个类似于this的引用,是指向父类的引用
class Father {
	public int value;
	public void f(){
		value = 100;
		System.out.println("FatherValue:"+value);
	}
}
class Son extends Father {
	public int value;
	public void f(){
		super.f();//引用父类的方法 
		//打印value:100(父类的)
		value = 200;
		System.out.println("SonValue:"+value);//子类自己的value 200
		System.out.println("FatherValue:"+super.value);//引用父类value 100
	}
}
public class TestSuper {
	public static void main(String[] args){
		Father father = new Father();
		father.f();
		Son son = new Son();
		son.f();
	}
	
}

在这里插入图片描述如何使用?

//继承中的构造方法
class SuperFunc {
	int n = 10;
	SuperFunc(){
		System.out.println("SuperFunc");
		
	}
	SuperFunc(int n){
		System.out.println("SuperFunc"+n);
	}
	
}
class Func extends SuperFunc {
	int n = 12;
	Func(){
		super();
	}
	Func(int n){
		super();
		//1.若不写super会自动找父类中无参的构造方法;
		//2.并且子类执行时一定会执行父类的构造方法
		//3.若没有子类的无参构造方法,则编译错误
		//4.super语句一定写在方法的第一行
		System.out.println("SuperFunc"+n);
	}
}
public class TestStruct {
	public static void main(String[] args){
		Func f = new Func();
		Func f1 = new Func(12);//
	}
}

class A {
	public void print(String s){
		System.out.println(s);
	}
	A() {
		print("A()");
	}
	public void f() {
		print("func A");
	}
}
class B extends A {
	B() {//自动调用A中无参构造
		print("B()");
		
	}
	public void f(){//相当于方法的重写
		print("funcB");
	}
	
}
public class TestPrint {
	public static void main(String[] args){
		B b = new B();
		b.f();
//		结果:
//		A()
//		B()
//		funcB
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值