Java继承&封装

Java继承&封装

封装

  1. 封装的概念
    在我们写代码的时候经常会涉及两种角色: 类的实现者和类的调用者
    封装的本质就是让类的调用者不必太多的了解类的实现者是如何实现类的,
    把属性和动作隐藏,只提供相应的方法来调用即可,只要知道如何使用类就行了.
    当类的实现者把内部的逻辑发生变化时,类的调用者根本不用因此而修改方法。
    这样就降低了类使用者的学习和使用成本,从而降低了复杂程度,也保证了代码的安全性。
  2. private来实现封装
    private 访问限制修饰符,被它修饰的字段或者方法就只能在当前类中使用。
    在这里插入图片描述
  • set/get函数来对封装的属性进行使用
public void setAge(int age) {
		if (age<0) {
			System.out.println("前来古人");//可以用来限定检测我们输入的数据是否合理
			//提高了属性的安全性
		}
	}
public class user {
	private String username;
	private String userpassword;
	private String userphone;
	private String useradr;
	private int userscore;
	// 给每个属性加上一对出入的方法 get&set
	//set 给属性赋值
	//get 获取对象属性
	public void setusername(String username) {
		if(username!=null||username.equals("")) {
			this.username=username;
			
		}else {
			System.out.println("用户输入非法!");
		}
	}
	//自己的属性使用都用this 指代
	public String  getusername() {
		return this.username;
		
	}
	

}

public class usermanage {
	public static void main(String[] args) {
		user user1 =new user();
				user1.setusername("dmsl");
				String name=user1.getusername();
				System.out.println(name);
	}

}

构造方法

  • 以类名为方法名,没有返回值结构
  • 每个类都有一个隐式的空参数构造方法 只要类中定义了构造方法就会被覆盖
  • 隐式的构造方法不参与重载
  • 创建对象时全部属性都可以进行初始化(不过不大建议那么写)

继承

  • 语法:extends
  • 格式:
    子类 继承(extends)父类{}
    接口 继承(extends)接口{} //抽象与抽象之间
  • 抽象的 抽象类 接口{抽象方法}
  • 具体的 类
  • 原则:
    1. 抽象不依赖具体
    2. 具体依赖抽象——依赖抽象的可以扩展更方便
  • 继承的范围:
  1. 子类继承了父类的所有东西

继承关系中的方法重写

public class student  {
	public String name;
	private String age;
	int id;
	protected int score;
	public void setAge(String age) {
		this.age=age;//子类依然会继承,所以它还是有这个属性的
	}
	public void study() {
		System.out.print("父类的学习方法!");
		
	}
	

}

public class unitstudent extends student {
//测试在子类中可以直接调用哪个属性
	public void infoprint() {
		System.out.println(name);
		//System.out.println(age);//不可调用
		System.out.println(id);
		System.out.println(score);
	
		
	}
	//重写父类的方法
	@Override//注解:检测这个方法是不是重写的
	public void study() {
		//System.out.print("父类的学习方法!");
		System.out.print("这是子类的学习方法!");
		
	}
	
}
  • 继承关系中:子类可以重写父类的方法
  • 重写的注解:
    @Override 检查方法重写是否正确
  • 格式要求:
    除方法体之外(访问权限修饰符,返回值类型,方法名(参数类型,参数变量名))与父类一致;
    重写之后,子类以及子类的对象优先调用重写之后的方法;
    子类对于父类的扩展开放

自动转型

  • 每个对象都不止一种身份类型
  • 一个学生对象 ->学生类 ->人类

一个大学生类型的对象

  • 创建对象
unitstudent stu1= new unitstudent();

-创建对象:new unitstudent();
-声明一个unitstudent类型的变量名;
-返回对象所在的地址给stu1这个变量名(对象名)

  1. 大学生类 student
  2. 学生类型 unitstudent
  • 子类对象可以自动转型为父类类型(一个子类对象的变量储存的对象引用地址,也可以存在父类类型的变量名中)
public class stumanange {
	static void stu_study(student stu) {
		stu.study();
		
	}
	public static void main (String[] args) {
		unitstudent stu1= new unitstudent();
	
		System.out.println(stu1.getClass());
		student stu2=new student();
		System.out.println(stu2.getClass());
		student stu3=new unitstudent();//子类对象自动转型为父类类型,还是调用重写之后的方法
		System.out.println(stu3.getClass());
		stu1.name="dmsl";
		stu1.id=19911106;
		stu1.score=116;
		stu1.setAge("29");//此时stu1具有了age这一属性
		//stu1.age=29 不可以直接调用
		stu1.study();
		stu2.study();
		stu3.study();
		stu_study(stu1);
		stu_study(stu2);
		stu_study(stu3);
		Midstudent stu4= new Midstudent();//创建新对象
		stu4.study();//调用的study函数结果
	}
	

}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值