JAVA类和对象,继承(私有属性),自动转型的原理及强制转型

Java 类和对象

1. 类和对象是什么

类可以理解成一个创造对象的模板,一切对象都需要从类生成。比如盖房子时,建造图纸可以类比成一个类,按照图纸建造的房子就是一个对象。按照图纸我们可以建造无数类似的房子,也就是我们可以根据这个类生成无数多的类似的对象。

2. 例子

类:
我们定义了一个Student类(注意:类的名称是大写开头,用大驼峰),类里面有成员属性 name, 方法 setName, getName, study。(注意方法及属性小写开头,用小驼峰)

//定义学生类
public class Student {
	//属性
	private String name;
	
	//方法
	public void setName(String n){
		name = n;
	}
	public String getName(){
		return name;
	}
	public void study(){
		System.out.println(name+"正在学习!");
	}
	
}

对象:
我们用构造好的“图纸”-Student类,来在主程序中生成一个un对象,并且调用其方法。

public class Manage {

	public static void main(String[] args){
		//生成一个un对象
		Student un = new Student();
		un.setName("XXX");
		un.study();

继承

1. 继承是什么

继承是在原“图纸”上加工得到更丰富的“图纸”,我们创建一个新的类,这个类拥有原来类的所有属性方法(包括私有,但是不能直接调用),并且可以添加新的方法和属性。

2. 例子

我们创建一个UNStudent类 继承(extends) Student类。UNStudent拥有Student类里面所有的方法和属性,并且可以自己新增方法和属性,另外可以“修改”(重写)Student类的方法。

public class UNStudent extends Student{
//1.有继承关系的两个类
	public void printName(){
		System.out.println("名字:"+getName());
	}
	//1.方法重写(覆盖)
	public void study(){
		System.out.println("子类重写父类的方法");
	}
}

3. 重写(Overrides)

在上个例子中, UNStudent类中的 study()方法就是对父类Student中study()方法的重写。
重写需要保证 UNStudent类中的 study()方法的 返回值类型,方法名,参数类型(个数,顺序)完全一样

私有属性的继承

私有属性和方法是可以被继承到子类中的,但是在子类生成的对象中不能直接调用,那如何调用呢?在上面的例子中注意

System.out.println("名字:"+getName());

我们用了间接的方式调用私有属性name,即使用了getName的方法。

自动转型的原理

我们在主程序中做一小点修改

public static void main(String[] args){
		//自动转型(向上)
		Student un = new UNStudent();
		un.setName("XXX");
		un.study();
		}
}

这里让 属于Student类型的un接收子类UNStudent生成的对象。
Java会帮我们自动转型(向上),此时un对象会从父类Student寻找需要用到的方法,若子类有重写,则用重写后的方法。

强制转型

此时un对象已经实现了自动转型(向上),那么如何让其强制转型(向下),示例如下

public static void main(String[] args){
		//自动转型(向上)
		Student un = new UNStudent();
		un.setName("XXX");
		un.study();
		
		//强制转型(向下)
		UNStudent unst = (UNStudent)un;
		unst.printName();
		}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值