浅谈Java中部分面向对象的规则

  引言:学习Java差不多一年过去了,还在上学期间,有时候,写JSP或是Android的时候,突然会被一个冷不丁的Java面向对象的一个小特征回忆的不是太清楚而烦恼,晚上,翻看了以前的Java书籍,看了面向对象,将一些冷不丁的,在写代码中容易忽视的“条例”列了下来。
 

一:方法的重载:

  • 发生在同一个类中
  • 方法名,也就是方法的标识必须相同
  • 形参列表一定不同
  • 注意:返回值不能决定方法的重载

二:方法的重写:

  • 方法重写需要与上面总结的方法重载区别开
  • 方法重写,重写的是什么? 重写的是父类方法
  • 要求:方法名一定相同、形参必须一样,重写的方法和父类被重写的方法的类别必须一样(要么都是类方法,要么都是实例方法)

三:变量的分类: 下面看一个我用UML画的图,有点丑,笔记不是文员啊,讲究看吧:

说明:

  • 实例变量是在改类创建对象之后,才被创建起来,而类变量不需要new(即在创建对象之前)就可以使用了。
  • 局部变量的优先级高于成员变量,因此,想要在重名的情况下使用成员变量,则可以使用this的关键字(this关键字不能用在有static修饰的方法中),以确保使用的是成员变量。(这也可以理解为是变量的重载)。

四:关于数据的封装:

            知道这回事情的人分为两种:第一:刚刚学习Java的人,只是知道有这么一回事情,但不是很能理解Java中存在数据封装的这一含义是为什么(我当时也一样)。    但当你写过一定的代码之后,才会理解,封装的意义,我就把我这一二讲讲:数据封装,经常性的和集合类进行连用,当你有一些数据比如,学生的学号,学生的姓名,学生的成绩,这三个属性作为一个学生的属性的话,那么可以写一个数据封装,把这三个属性,作为成员变量,下面使用getter、setter方法,对这些数据进行封装,那么下面只要创建一个封装类的对象,就相当于创建了一个学生,看代码:

public class student{

	private int id;
	private String name;
	private double point;
	
	public student{};
	
	public student(int id,String name,double point){
		this.id=id;
		this.name=name;
		this.point=point;
	}
	
	//下面只要生成默认的getter、setter方法即可

}
​

public class Crete{

	public static void main(String[] args){
		Student s1=new Student(1,"张三",95.0);
		Student s2=new Student(1,"张三",91.0);
		Student s3=new Student(1,"张三",92.0);
		Student s4=new Student(1,"张三",99.0);
	}

}

[点击并拖拽以移动]
​

解释:首先创建一个数据封装的类,类有三个成员变量:id ,  name , point。这三个属性作为一个学生类的属性。

在Create类中,分别创建了4个封装类的对象,就相当于你创建了四个学生,下面的工作,只要对这个这个学生进行操作即可。

五:构造器:

  • 每一个类在创建对象的时候,会默认有一个构造器,调用构造器的关键字是“new”来调用构造方法
  • 如果一个类没有构造方法,则创建对象会自动生成一个无参的构造方法
  • 如果你想在类的实例化中对,类中的相关成员变量赋值,那么你就得自己造一个含参的构造器对其赋值了,就像上面贴出的代码(Student类)

六:super关键字:

  • super和this一样,不能出现在有static修饰的方法中
  • super和this相反,super是调用父类中被覆盖的方法或者是成员变量
  • super可以在子类的构造器中,调用父类的构造器
package njcc.zcy;

public class Sp2 {
	public static void main(String[] args){
		Sp3 b=new Sp1(1,"张三","红色");
		//输出:1===张三
		System.out.println(b.id+"==="+b.name);
		//如果没有Sp1中的super调用父类构造方法的话,那么,打印出来的则是0===null,为什么是0,
		//因为,在当被创建对象的时候,成员变量在没有被赋值的情况下就像数组一样,默认填充为0。
	}
	
	
}

class Sp1 extends Sp3{
	int id;
	String name;
	String color;
	public Sp1(int id, String name,String color) {
		super(id, name);
		this.color=color;
	}
}

class Sp3{
	int id;
	String name;
	public Sp3(){}
	public Sp3(int id,String name){
		this.id=id;
		this.name=name;
	}
	
}


不早了,上面的简单概念的面向对象中一些特征还有很多,比如多态,接口,抽象类等等 

转载于:https://my.oschina.net/zcysxj/blog/861038

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值