JAVA程序语言基础B(五)

类与对象

面对对象的术语

对象:

​ 对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。每个对象都有一组属性和对这对属性进行操作的行为。客观世界是由对象和对象之间的联系组成的。

类;

​ 类是相同属性和行为的一组对象的集合。即类是对一组相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。

面对对象的基本特征

  1. 封装性

是把属性和方法包装起来,并尽可能隐藏内部的细节,从而实现隐藏和模块化

  1. 继承性

继承体现了一种先进的编程模式。子类可以继承父类的属性和行为。

实现了代码的复用

  1. 多态性

多态是面对对象编程的有一个重要的特征。有两种意义的多态,一种是方法的重载,即多个操作具有相同的方法名,通过参数的类型不同或个数不同确定到底执行哪种方法;

另一种是和继承有关的多态,即同一方法被不同对象调用时可以产生不同的行为

解决了同名方法的问题

类的封装

类的声明:

[类修饰符] class 类名 [extends 基类] [imolements 接口列表]{

​ [成员变量声明]

​ [构造方法定义]

​ [成员方法定义]

}

类修饰符[可选]:用于规定类的一些特殊性,如访问控制,抽象类等

类名:类的名字,一般首字母大写,其余的小写。如果类名由多个单词组成,则每个单词的首字母大写

extends 基类:表示新类由父类派生,Java中只支持单继承

implements 接口列表:表示实现接口。

类体:用花括号括起,类体中可有成员变量声明、构造方法定义和成员方法定义

类的成员变量:

用于定义类的属性,该成员变量可被类内的所有方法访问,其作用范围是整个类

格式:

[] 数据类型 变量名 [= 初始值];

如下:

public class Circle{
    private double radius;//定义了描述半径的成员变量
    //成员方法
}

其中private为私有作用域,表示该成员变量只能在类中被访问。

如果在定义变量的时候没有给出初始值,系统会自动赋值。

类的成员方法:

类的成员方法描述了对象所具有的功能和操作,是对象的行为。

[方法修饰符] 返回类型 方法名 ([参数列表]) [throws 异常列表]{

​ [方法体]

}

  1. 方法修饰符[可选]:有publicprivatestaticfinal
  2. 返回类型:返回的类型,可以是基本数据类型,也可以是引用数据类型如果没有返回值,则用void作为返回值类型。
  3. 方法的名字
  4. 参数列表[可选]:方法的参数列表。如果没有参数括号也不能省略
  5. 方法体:用一对花括号括起来的方法体。

例如求圆面积的方法:

public class Circle{
    private double radius;
    //求圆面积的方法
    double getArea(){
        return Math.PI*radius*radius;
    }
}

上述getArea()方法,方法名称为getArea(),没有定义参数,在方法体中,直接使用成员变量radius求圆的面积,最终返回通过计算获得的面积值,成员变量的作用域是整个类。

getters()和setters():

  • getters()方法:用于读取成员变量的值,方法名是get加上首字母大写的变量名,没有参数,返回值类型与成员变量的数据类型相同。
  • setters()方法:用于设置成员变量的值,方法名是set加上首字母大写的变量名,无返回值,有一个与成员变量的数据类型相同的参数。
public void setRadius(double radius){
    this.radius = radius;
}

在这个方法中,setRadius方法的参数名与成员变量名相同,为了区分这两个变量,用this关键字访问类中成员变量,this代表引用自身对象。

设置getters()方法,该成员变量只能读取,不能修改,相当与设置了只读属性;在setters()方法中,可以在设置变量值前进行数据合法性校验。

构造方法

普通变量在定义的同时,可以对其赋值,用类创建对象的同时,对对象赋初始值是通过构造方法进行的。

  • 无参数构造函数
  • 有参数构造函数
public class Circle{
    private double radius;//定义成员变量radius
    public Circle(){		//定义无参数的构造方法
        radius = 0;
    }
    public Circle(double radius){	//定义有参数的构造方法
        this,radius = radius;
    }
    public double getRadius(){		//定义getters方法
        return radius;
    }
    public void setRadius(double radius){	//定义setters方法
        this.radius= radius;
    }
    double getPermeter(){				//定义周长方法
        return 2*Math.PI*radius;
    }
    double getArea(){					//定义面积方法
        return Math.PI*radius*radius;
    }
    void disp(){
        System.out.println("圆的周长为:"+getPerimeter());
        System.out.println{"圆的面积为:"+getArea();
    }
}

类的实例

声明一个类就是定义了一个新的引用数据类型,可以用这个数据类型来声明这种类型的变量(即对象、实例)。

(1)声明对象

创建对象包括声明对象和实例化对象两个部分,声明对象的格式为:

[变量修饰符] 类名 对象名;

类名:将声明过的类作为一种引用数据类型。

对象名:对象(实例)的名字,他作为一个变量来使用,命名遵从变量命名的原则。

Circle c

定义了Circle类的实例(也称为对象或变量):c

(2)创建对象

声明过的对象不能被引用,它默认值是null(空),必须使用new关键字创建这个对象。

​ 对象名 = new 类名([参数列表]);

对象名:即实例名或变量名;

类名:类名必须与声明对象时的类名相一致。

参数列表[可选]:调用相应的构造方法,用参数初始化对象。

c=new Circle();
//或者
c= new Circle(10);

结合声明和创建:

Circle c = new Circle();
//或者
Circle c = new Circle(10);

(3)对象的使用

  • 引用对象的属性:对象名.成员变量名
  • 调用对象的方法:对象名.方法名([参数列表])
  • 对象的销毁:系统自动

老师上课的题目:

//1.定义一个Mankind类
//2.封装 id, sex, name属性
//3.封装 Speak方法
//4.id, sex, name的getters和setters方法
//5.无参的构造函数和有参的构造函数
//6.定义一个Test类进行测试


public class Mankind {
	private String id;
	private int sex;
	private String name;
	

	public Mankind(String id,int sex,String name) {
		this.id= id;
		this.name=name;
		this.sex=sex;
	}
	public Mankind (){
		
	}
	public void Speak(){
		System.out.println("说话");
	}
	public void setId(String id){
		this.id=id;
	}
	public void setSex(int sex){
		this.sex=sex;
	}
	public void setName(String name){
		this.name=name;
	}
	public String getId(){
		return id;
	}
	public int getSex(){
		return sex;
	}
	public String getName(){
		return name;
	}
	public static void main(String[] args){
		Mankind man1 = new Mankind();
		man1.id = "123";
	}
	
	}

------------------------------------------------------------------------

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Mankind man1 = new Mankind();
		Mankind man2 = new Mankind("11",1,"jack");
		
		System.out.println(man2.getId());
		System.out.println(man2.getName());
		man2.Speak();
	}

成员访问权限

访问控制修饰符:publicprivateprotecteddefault

​ java类成员的访问控制

访问控制符同一个类中同一个包中不同包的子类不同包的非子类
private可以访问×××
default可以访问可以访问××
protected可以访问可以访问可以访问×
public可以访问可以访问可以访问可以访问
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无法长大的Panda

您的鼓励是最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值