Java程序设计笔记二:面向对象

类和对象

类是对象的抽象,对象是类的实例。

类的定义

class 类名{
   
	成员变量; //描述对象的特征
	成员方法; //描述对象的行为
}

实例:定义一个曲奇饼干类

class Cookie{
   
	String brand; //类中定义的变量称为成员变量
	int num; 
	void read() {
   
		int price = 3; // 方法内部定义的变量称为局部变量
		int total_price = num * price;
		System.out.println("The price of" + num + brand + " is " + total_price + " yuan.");
	}
}

Java的方法不能像C++一样类外定义,C++如果在类的内部定义方法, 这个方法将自动地成为内联(inline) 方法,但是Java中, 所有的方法都必须在类的内部定义, 而且也并不表示它们是内联方法。

注意:如果需要返回一个可变对象的引用, 应该首先对它进行克隆(clone ),否则就有可能破坏对象的封装性。

程序设计语言的参数传递一般有两种方式:值调用和引用调用。Java是值调用而非引用调用,对象引用是按值传递的。

对象的创建

创建对象分为声明对象和实例化对象

类名 对象名称 = null;
对象名称 = new 类名();

可以合为一步创建:类名 对象名称 = new 类名();

创建曲奇饼干对象[皇冠丹麦][蓝罐丹麦]

public class Test1 {
   
	public static void main(String[] args[]) {
   
		Cookie danisa = new Cookie(); //创建第一个Cookie对象
		danisa.brand = "Danisa";  //为danisa对象的brand属性赋值
		danisa.read(); //调用danisa对象的read()方法
		Cookie kjeldsens = new Cookie(); //创建第二个Cookie对象
		kjeldsens.brand = "Kjeldsens";
		kjeldsens.read();
	}
}

对象的引用传递

和C++的引用不同,Java的引用本质是指针,类似C++的对象指针,而C++的引用是为原变量起一个别名,二者是同一个对象,只是名字不同。

类属于引用数据类型,引用数据类型就是指内存空间可以同时被多个栈内存引用,引用传递就是一个堆内存空间的使用权给多个栈内存空间使用。

但是一个栈内存空间只能指向一个堆内存空集,如果想要再指向其他堆内存空间,就必须先断开已有的指向才能分配新的指向。

public class Test2 {
   
	public static void main(String[] args[]) {
   
		Cookie danisa = new Cookie(); //声明danisa并实例化
		danisa.brand = "Danisa";  
		danisa.read(); 
		Cookie goodies = null;  //声明goodies但不实例化
		goodies = danisa; //danisa给goodies分配空间使用权
		goodies.read();
	}
}

访问控制

访问控制级别

  • (1)private(当前类访问级别):private 属于私有访问权限,用于修饰类的属性和方法。类的成员一旦使用了private关键字修饰,则该成员只能在本类中进行访问
  • (2)default:如果一个类中的属性或方法没有任何的访问权限声明,则该属性或方法就是默认的访问权限,默认的访问权限可以被本包中的其它类访问,但是不能被其他包的类访问
  • (3)protected:属于受保护的访问权限。一个类中的成员使用了 protected 访问权限,则只能被本包及不同包的子类访问
  • (4)public:public 属于公共访问权限。如果一个类中的成员使用了 public访问权限,则该成员可以在所有类中被访问,不管是否在同一包中
访问范围 private default protected public
同一类中
同一包的类中
不同包的子类
全局范围

小提示:Java 程序的文件名

如果一个 Java 源文件中定义的所有类都没有使用 public 修饰,那么这个 Java 源文件的文件名可以是一切合法的文件名;如果一个源文件中定义了一个 public 修饰的类,那么这个源文件的文件名必须与 public 修饰的类名相同。by 《Java基础案例教程(第二版)》

类的封装

封装:将将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象的内部信息,而是通过该类提供的方法实现对内部信息的操作访问

实现封装:private关键字修饰类的属性,让类的属性私有化,被私有化的属性只能在类中访问

class Cookie{
   
	private String brand; 
	private int num; 
	private int price = 3; 
	public String getBrand() {
   
		return brand;
	}
	public void setBrand(String brand){
   
		this.brand = brand;
	}
	public int getNum() {
   
		return num;
	}
	public void setNum(int num){
   
		if(num <= 0){
   
			system.out.println("您输入的数量有误");
		} else {
   
			this.num = num;
		}
	}
	public void read() {
   
		int total_price = num * price;
		System.out.println("The price of" + num + brand + " is " + total_price + " yuan.");
	}
}

构造方法

构造方法用于在实例化对象时(注意不是声明对象时)为对象的属性赋值,不定义构造方法即会创建默认构造方法。

语法:

  • (1)构造方法的名称必须与类名一致
  • (2)构造方法名称前不能有任何返回值类型的声明
  • (3)不能在构造方法中使用 return 返回一个值,但是可以单独写 return 语句作为方法的结束
class Cookie{
   
	private String brand; 
	private int num; 
	private int price = 3; 
	public Cookie(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java面向对象程序设计笔记: 目录----非原创,上课的时候老师给的资料哦 第一章 Java 前凑 3 1. Java前凑 3 Java产生的目的 3 Java的诞生的历史 3 2.Java语言的特点 3 简单性 3 面向对象 3 网络技能 3 3.Java语言与其他语言的区别 4 第Java面向对象程序设计初步 4 1. 程序语言的分 4 解释型语言 4 Java是编译解释型语言 4 Java编译器、解释器、JVM以及OS之间的关系 4 JVM的结构与作用 4 2. 程序设计的发展过程 4 程序设计的发展过程 4 O-O发展过程 5 O-O的体系 5 O-O程序设计与结构化程序设计的区别 5 3. Java应用程序 5 搭建开发环境 5 4. 的设计与对象的构造 6 的两个要素 6 构造函数 7 Java对内存的管理 7 Java源文件的结构 7 第三章 Java语法 8 1. Java注释 8 2. 标识符 9 3. 数据型 9 基本数据型 9 引用数据型 9 5. 变量 9 6. 运算符 9 7. 数据的传输 9 8. 程序的逻辑控制语句 9 9. 数组 9 第四章 JavaOO程序设计 9 1.Java面向对象编程的特点 9 2.继承 10 2.1继承 10 2.2.Super关键字: 10 2.3.this关键字: 10 2.4.子对象的构造和初始化: 11 2.5.方法的覆盖: 11 2.6.各种数据型之间的相互转换: 12 3.静态成员 13 4. Final关键字: 13 5. 抽象: 13 6. 接口 14 7. 接口与抽象的区别: 15 8. 设计模式 15 单一设计模式: 15 策略模式: 16 模板模式: 16 组合设计模式: 16 9. 多态 16 10. 内部 17 第五章 Java集合对象 18 1.List 18 2.Set 18 3.Map 19 第六章 常用的API 21 1.对文件进行操作的 21 2.对String对象操作的 24 3. 对时间处理的 25 4. 对系统处理的: 26 5. 数据运算的 27 6. 正则表达式 27 第七章 异常处理 32 第八章Oracle数据库基础 32 第九章JDBC编 32 第十章GUI编程 32

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值