Java学习笔记(面向对象上)----类、对象、传参、封装、继承

1 篇文章 0 订阅

文章的相关代码及补充已经更新在下载管理,不需要积分即可下载

1.类和对象

1)面向对象(Object Oriented Programming,OOP):将项目拆分成类和接口

  • 构建类,类之间有关联
  • 构建对象,对象之间有关联
  • 配合完成功能,互相调用行为

面向过程(Procedure Oriented Programming,POP):将项目拆分成步骤

类有属性(变量、数组)、方法(变量、数组、流程控制)、代码块;

类是作为一个模板(泛指),对象是创建具体事物(特指);

类是对象的类型,不同于int类型,具有方法; 

类是虚拟的,只是一个模板。

2)对象同时有属性和方法,相辅相成

  • 定义类    属性和方法
  • 创建对象  属性和方法(具体变量、流程控制)
  • 适用对象  调用方法
//创建stu对象
int[] arr = new int[5];  int i = 0;

//类Student是对象stu的(数据)类型
Student stu = new Student();

2.单例设计模式--一个类只能new一个对象

成员变量和局部变量的作用域、初始值不同

1)成员变量:整个类内部可见,会给一个初始值

2)局部变量:仅限于定义它的方法,不会赋予初值

方法:public + 返回值类型 + 方法名 + (参数列表) { 方法体 }

public void show() {
	System.out.println(schoolName + "***" + classRoomNum + "***" + roomNum);
}

3.参数传递

StringBuffer 比String更强大

== 与 equals 的用法,equals会比较每个字符

字符串连接:一般使用 "+" ,或者concat()

String str = "zbd ";
String str2 = "zbd ";
System.out.println(str.length());//4
System.out.println(str.trim().length());//3   空格放中间是4   trim 去掉前后空格
System.out.println(str == str2);//true

String str3 = new String("zbd ");
System.out.println(str == str3);//flase   地址不同
System.out.println(str == str3.intern());//true
System.out.println(str.equals(str3));//true

String str = "hello.java";
//判断是否有 .  ,不能是第一位
//从点开始到结束只能是java
System.out.println(str.indexOf(".java"));
System.out.println(str.substring(str.indexOf(".")+1).equals("java"));
System.out.println(str.substring(0,1));

//判断邮箱
String email = "458@163.com";
//是否有 . 和 @
if(email.indexOf("." ) == -1 || email.indexOf("@" ) == -1 ) {
	System.out.println("没有 . 和 @");
}
// . 和 @不能是首位和末尾
else if(email.indexOf("." ) == 0 || email.indexOf("." ) == email.length()-1 || email.indexOf("@" ) == 0 || email.indexOf("@" ) == email.length()-1 ) {
	System.out.println(". 和 @不能是首位和末尾");
}
// . 在 @ 之后
else if(email.indexOf("." ) < email.indexOf("@" )) {
	System.out.println(" . 在 @ 之前");
}
// . 和 @不能挨着
else if(email.indexOf("." ) - email.indexOf("@" ) < 2) {
	System.out.println("  . 和 @不能挨着");
}
else {
	System.out.println("成功");
}

String str = "7844 45 79 21 656 xahin zhan 拆";
String[] res = str.split(" ");//返回数组
for (int i = 0; i < res.length; i++) {
	System.out.println(res[i]);
}

StringBuffer str =new  StringBuffer("7844 45 79 21 656 xahin zhan 拆");
String[] res = str.split(" ");//返回数组
for (int i = str.length() - 3; i >0 ; i=i-3) {
	str.insert(i,',');	
}

4.类的特征之一--封装

将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

  • 隐藏类的实现细节
  • 方便加入控制语句
  • 方便修改实现
  • 只能通过规定方法实现

步骤:

设置private;   创建共有的getter/setter;   在getter/setter中加入属性控制语句。

public class Pet {
	private String name = "名字";
	private int health = 100;
	private int love = 0;
	
	public Pet() {
		System.out.println("无参构造");
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getHealth() {
		return health;
	}
	public void setHealth(int health) {
		this.health = health;
	}
	public int getLove() {
		return love;
	}
	public void setLove(int love) {
		this.love = love;
	}
	public void print() {
		System.out.println("我的姓名是:" + this.name + ",我的健康值为:" + this.health + ",我与主人的亲密度为:" + this.love);
	}
}

5.类的特征之一 -- 继承

针对代码冗余,可以方便修改代码,减少代码量

上述代码为父类,则下面代码为子类,使用关键词extends来继承

public class Penguin extends Pet{
	private String sex = "Q仔";
	
	public Penguin(String name, String sex) {
		this.setName(name);//私有属性访问 间接通过方法访问
		this.sex = sex;
	}
	
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
}

子类对于父类的方法可以重写/覆盖

public void print() {
		super.print();
		System.out.println("**************");
	}

调用构造方法需要new对象 

四种访问权限修饰符

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值