封装、继承和多态

自从上次上完课后,就一直复习,今天考完一科之后,有时间写一下博客了。

一、上次课主要讲了java面向对象的三大特性:封装、继承和多态。

1、封装:在关于封装的控制符里,访问等级由小到大分别是private、default、protect和public,其中,默认的访问等级是default。但是我在运行时想用default来修饰类的成员变量和函数,却报错,需要我删除default这个修饰符。

2、继承:java里面只有单继承,无多继承,多继承的功能可以用接口来使用。子类继承父类,需要使用extends修饰符,子类访问父类的内容,则使用super,子类访问自己的变量或函数,可以使用this。

3、多态:即一种定义多种实现,其中,我们接触到了一个例子:

public class Class {
<span style="white-space:pre">	</span>public static void main(String[] args){
<span style="white-space:pre">	</span>BaseClass baseclass=new BaseClass();
<span style="white-space:pre">	</span>SubClass subclass=new SubClass();
<span style="white-space:pre">	</span>BaseClass bs=new SubClass();
<span style="white-space:pre">	</span>if(bs instanceof BaseClass){
<span style="white-space:pre">		</span>System.out.println("baseclass");
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>else if(bs instanceof SubClass){
<span style="white-space:pre">		</span>System.out.println("subclass");
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>bs.base();
<span style="white-space:pre">	</span>bs.test();
<span style="white-space:pre">	</span>}
}


class BaseClass{
<span style="white-space:pre">	</span>public void base(){
<span style="white-space:pre">		</span>System.out.println("1");
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>public void test(){
<span style="white-space:pre">		</span>System.out.println("2");
<span style="white-space:pre">	</span>}
}


class SubClass extends BaseClass{
<span style="white-space:pre">	</span>public void base(){
<span style="white-space:pre">		</span>System.out.println("3");
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>public void test(){
<span style="white-space:pre">		</span>System.out.println("4");
<span style="white-space:pre">	</span>}
}
这里,BaseClass是父类,SubClass是子类,在编译过程中,bs是BaseClass类,在执行过程中则是SubClass类。

4、初始化块:初始化块只能由static修饰,而且最先执行,用于在创建对象的时候进行某些赋值操作。

二、值得注意的地方

1、eclipse中可以快速生成get、set方法,在成员变量中右击source中。

2、再重写方法时,最好使用@Override,可以增强代码的可读性。

3、使用instanceof方法,可以判断变量的类型,方便后面的操作。

4、不能在父类中调用即将被子类重写的代码。

5、重写带参数的构造器而不重写默认构造器,则默认构造器不可使用。

三、作业

public class PersonInSchool {
	public static void main(String[] args){
		Teacher teacher=new Teacher();
		Student student=new Student();
		ClassTeacher classteacher=new ClassTeacher();
		School school=new School();
		System.out.println(student.getName()+"在"+school.getPlace()+student.getAction());
		System.out.println(teacher.getName()+"给"+student.getName()+teacher.getAction());
		System.out.println(classteacher.getName()+"要求"+student.getName()+"参加"+school.getPlace()+"的"+school.getActivity());
	}
}

class Person{
	private String name=null;
	private String action=null;
}
class Teacher extends Person{
	private String name="老师";
	public String getName() {
		return name;
	}
	private String action="布置作业";
	public String getAction() {
		return action;
	}
}
class Student extends Person{
	private String name="学生";

	public String getName() {
		return name;
	}
	private String action="上课";

	public String getAction() {
		return action;
	}
	
}
class ClassTeacher extends Teacher{
	private String name="班主任";

	public String getName() {
		return name;
	}
}
class School{
	private String place="学校";

	public String getPlace() {
		return place;
	}
	public String activity="文体活动";

	public String getActivity() {
		return activity;
	}
}
在这里,我首先创建了Person类和School类,教师类和学生类继承Person类,班主任类继承教师类,在各个子类中都重写Person类的成员变量,再在主类中调用各个方法,达到输出目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值