关于类的封装、继承和多态的一点个人理解

封装

/*
 * Test:
 * 封装
 */
public class Package {
	/*将属性定义为private,可以将属性封装在类中,
	*不会被别人轻易随便调用修改,
	*只能通过提供的方法接口进行访问
	*/
	private String name;
	private int age;
	private Package(String name,int age) {
		this.name=name;
		this.age=age;
	}
	public void Display() {
		System.out.println("姓名:"+name);
		System.out.println("年龄:"+age);
	}
	public static void main(String[] args) {
		Package page=new Package("王五",40);
		page.Display();
		//如果name and age is public,I can 
		//Package.name="张三",则随意篡改属性;
		//而用上了private进行封装,则别人只能使用到我留下的Display()方法,
		//而不知道其他部分运行情况。保护了数据的私密性		
	}

}

在这里插入图片描述

继承

class Father{
	private String name;
	private int age;
	//构造方法
	protected Father(String name,int age) {
		System.out.println("Father构造函数");
		this.name=name;
		this.age=age;
	}
	//父类方法
	public void Dis() {
		System.out.println("他叫"+name);
		System.out.println("他已经"+age+"岁了");
	}	
}

public class Son extends Father{
	String sex="男";
	//构造方法
	public Son(String n,int a) {
		super(n,a);
		//调用父类构造
		System.out.println("Son的构造函数");
	}
	//方法重写
	public void Dis() {
		System.out.println(sex);		
	}
	//特有方法
	public void Son0() {
		System.out.println("特有方法");
	}
	public static void main(String[] args) {
		Father s=new Son("张三",67);
		s.Dis();
		//调用重写方法,而不是父类方法 
		Son s1=(Son)s;
		s1.Son0();
		//不能直接使用s.Son0(),不可调用
		//解决办法,将s,强制转换成Son的实例		
	}
}
//多重继承,但是不能循环继承或者多个继承
//即c继承b,b继承a,a继承c
//即b继承c,继承a
class p extends Son{
	public p(String n, int a) {
		super(n, a);	
	}
	
}

在这里插入图片描述

多态

class F{
	public void dis() {
		System.out.println("父类");
	}
	public void FF() {
		System.out.println("父类无重写");
	}
}

class G extends F{
	public G(){
		System.out.println("子类1");
	}
}
 
public class SonTest extends F{
	public SonTest() {
		System.out.println("子类2");
	}
	//子类重写父类方法
	public void dis() {
		System.out.println("子类重写");
	}
	//子类特有方法
	public void sdis() {
		System.out.println("子类独有");
	}
	public static void main(String[] args) {
		F f=new SonTest();
		f.FF();
		//实例f只能调用子类中重写的父类方法和父类方法
		//强制类型转换的时候最好能用instance 判断一下类型是否相同
		if(f instanceof SonTest) {
			//强制转换
			SonTest f1=(SonTest)f;
			f1.sdis();
		}
		if(f instanceof G) {
			G f2=(G)f;
		}
		
	}
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值