Java学习day04-面向对象(上)

Java类及类的成员

包括:属性、方法、构造器;代码块、内部类

面向过程(POP)与面向对象(OOP)

面向过程强调过程以函数为最小单位,强调怎么做
面向对象将功能封装进对象强调具备了功能的对象,以类和对象为最小单位,考虑谁来做。

属性和方法

属性(field):类中的成员变量。方法(function):操作变量的函数

//类的定义
class Person {
//属性
	String name;
	int age =1 ;
	boolean isMale;

//方法
	public void eat(){
		System.out.println("Person can eat");
	}
	public void sleep(){
		System.out.println("Person can sleep");
	}
}

//类的实例化,创建对象
public class PersonTest{
	public static void main(String[] args){
		Person p1=new Person();//实例化对象
		p1.eat();//调用对象的方法
		p1.name="Tom";//调用对象的属性

		Person p2= p1;//将p1对象的地址值复制给p3
	}
}

对象的内存解析

堆存放对象,栈存放局部变量
在这里插入图片描述
在这里插入图片描述

类中方法的声明和使用

方法的声明:权限修饰符 返回值类型 方法名(形参列表){
方法体
}
权限修饰符 privare,public,protected,缺省。

对象数组内存结构解析

在这里插入图片描述

匿名对象

创建的对象没赋给一个变量名,ji为匿名对象,一次性使用。一般用于传参。

new Phone().sendEmail();//直接调用不用复制给一个对象

方法的重载

一个类中允许存在同名的方法只需要参数个数或者类型不同即可。和方法的权限修饰符、返回值类型、形参变量名、方法体都没有关系例如

int add(int x,int y){return x+y;}
int add(int x,int y,int z){return x+y+z;}
double add(double x,double y){return x+y;}

可变个数的形参

JavaSE 5.0提供了可变个数的形参Varargs(variable number of arguments)机制,允许直接定义能和多个实参相匹配的形参,从而用一种更简单的方式,来传递个数可变的实参。可变形参放最后一个。
在这里插入图片描述

引用数据类型

值传递,无法交换m和n

int m=10; n=20;
public void swap(int m,int n){
	int temp=m;
	m=n;
	n=temp;
}

引用传递可以交换,因为用一个对象对一个新的对象的赋值,是地址传递而不是值传递。

class Data{
	int m;
	int n;
}
Data data=new Data();
data.m=10; data.=20;
public void swap(Data data){
	int temp=data.m;
	data.m=data.n;
	data.n=temp;
}

面向对象的三大特征

三大特征:封装性(Encapsulation)、继承性(Inheritance)、多态性(Polymorphism),(抽象性)

封装与隐藏

隐藏对象内部的复杂性,只对外公开简单接口。提高系统的可扩展性、可维护性。

四种修饰权限

封装性的体现需要权限修饰符来配合。Java规定四种权限从小到大排列:private,缺省,protected,public。不同的对象对于一个类的访问权限如下图所示。
在这里插入图片描述
四种权限修饰符可以修饰类以及类的内部结构:属性,方法,构造器,内部类。
修饰类只能使用: 缺省,public。

构造器

构造器、构造方法、构造函数都是一个意思。
构造器的作用:创建对象。例如 Person p= new Person(); new后面的Person() 为构造函数,与类名相同。如果没有显示定义构造函数,系统会给默认构造函数,没有参数,一旦定义了类的构造器,系统不再提供默认构造器。和C++不同的是,Java有垃圾收集机制,所以不需要定义析构函数。

构造函数可以重载

JavaBean

JavaBean是一种符合标准的Java类。通常每个需要使用的数据类型都是一个JavaBean。
在这里插入图片描述

UML类图

banking是包名,Account是类名。
在这里插入图片描述

其他关键字

关键字:this、super、static、final、abstract、interface、package、import等

this的使用

this 表示当前对象,就近取当前对象的内容。在类的方法种,我们使用“this.属性”或者“this.方法”的方式,调用当前对象的属性或者方法。但是通常情况下可以省略this,特殊情况下,如果方法的形参和类的属性同名,我们必须使用"this.属性"来表明次变量是属性,而非形参。

class Person{
	private String name;
	private int age;

	public void setName(String name){
		this.name=name;//该对象的name属性等于参数name
	}
}

this调用构造器,在类的构造器中,可以显示的使用“this(形参)”方式,调用本类中指定的其他构造器。构造器不能通过this调用自己。也不能互调形成循环。一次只能用this调一个构造器。

class Person{
	private String name;
	private int age;

	public Person(){//构造器1
		this.eat();
	}
	public Person(String name){
		this();//调用构造器1来帮助初始化
		this.name=name;
	}
}

package的使用

1.为了更好的实现项目类中的管理,提供包的概念。
2.使用包就放在java源文件的首行。
3.包,属于标识符,遵循标识符命名规则,规范(xxxyyyzzz)。
4.每“.”一次就代表一次文件目录。
5.同名包下不能定义同名的接口和类。不同包下可以。
在这里插入图片描述

MVC设计模式

在这里插入图片描述
在这里插入图片描述

import的使用

用于导入指导包下的类。声明在包和类之间,需要导入多个结构则并列写入。可以使用“xxx.*”的方式,表示导入xxx包下所有的结构。默认已经导入了java.lang内的结构如String或者System则可以不导入。如果类重名,则需要在类前面写全,包的路径,包的全名。import static可以导入类和接口中的静态结构。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值