1.面向对象的描述
1.1对象是事物存在的实体
1.2同一类事物的统称,以方法的形式定义
1.3
封装是面向对象编程的核心思想,简单点说就是,我把某些东西封装起来,这些关键的核心的东西不能给你看,但是我可以提供给你一些简单使用的方法。
就说现在最最常用的手机,人人都会用,打电话、发短信、玩游戏、刷视频等等,但你知道手机怎么实现这些功能的吗??不知道吧,我们会用就可以了,怎么实现的对我们来说不重要。那这就很类似封装的理念了。
特点:封装性,继承性,多态性
1.4
继承
类与类之间同样具有关系,称为关联。继承就是关联的一种。
例题图如下
1.5
多态
多个形态
例题图如下
2类
成员变量
例题代码如下
public class Sixone { //类
private String name; //String类型的成员变量
public String getName() {//name的Getter方法
return name;
}
public void setName(String name) {//name的set方法
this.name=name;//将参数的值赋予成员变量
}
}
//6.1例题
2.1
成员方法
框住局部变量
点击蓝色Generate,生成成功
2.2 局部变量
局部变量的有效范围 this关键字
例题代码如下
public class Bird {//静态属性
//静态属性————成员变量去写
private String name;//名字 //default默认的意思
private String wing;//翅膀
private String mouth;//嘴
private String head;//头
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;//指这个类bird
}
public String getWing() {
return wing;
}
public void setWing(String wing) {
this.wing = wing;
}
public String getMouth() {
return mouth;
}
public void setMouth(String mouth) {
this.mouth = mouth;
}
public String getHead() {
return head;
}
public void setHead(String head) {
this.head = head;
}
2.3
:类的构造方法
产生对象但信息不全面(需要传入参数)
例题代码如下
//构造方法:调用构造方法创造一个对象
public Bird(String name,String wing,String mouth,String head) { //传入参数//构造了鸟这个类
this.name = name;
this.wing = wing;
this.mouth = mouth;
this.head = head;
}
public class Sixone{
public static int[] exchange(int[]arr) {
int tmp=arr[0];
arr[0]=arr[1];
arr[1]=tmp;
return arr;
}
public static void main(String[]args) {
int arr[]= {17,29};
System.out.print("第一个值="+arr[0]+"第二个值="+arr[1]);
arr = exchange(arr);
System.out.print("第一个值="+arr[0]+"第二个值="+arr[1]);
}
}//例题6.2
结果如下
2.4
编写成员变量
使用快捷键(参考我选项卡)
1.静态属性——成员变量
2.动态属性——成员方法
例题代码如下
public class People {
//姓名 //年龄 //性别 //身高 //体重
//成员变量:类型加变量名
private String name;//用修饰符修饰
private int age;
private String sex;
private float hight;
private float weight;
//使用getter和setter方法对外部提供
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public float getHight() {
return hight;
}
public void setHight(float hight) {
this.hight = hight;
}
public float getWeight() {
return weight;
}
public void setWeight(float weight) {
this.weight = weight;
}
成员方法
//成员方法
//写代码 方法名:code 传入参数:语言,返回参数:”某某某正在写xxx代码“
public String code(String language) { //公开+类型+传入参数
return name+"张红"+language+"Java代码";//返回name值+类型
}
public String introduce() {
return age+"梁深年22岁" + sex + "性别男" +hight+"1米88" +hight+"60kg";
}
}
例题代码
package a;
public class b {
int egg;//鸡蛋灌饼里蛋的个数
public b(int egg) {//参数为鸡蛋灌饼里蛋的个数的构造方法
this.egg=egg;//将参数依据egg的值赋给属性egg
}
public b() {//无参数构造方法默认给饼加一个蛋
this(1);//调用参数为鸡蛋灌饼里蛋的个数的构造方法,并设置鸡蛋灌饼里蛋的个数为1
}
public static void main(String[] args) {
// TODO Auto-generated method stub
b cake1=new b();
System.out.println("顾客不要求加蛋的数量,饼里会有"+cake1.egg+"蛋");
b cake2=new b(2);
System.out.println("顾客要求加2个蛋的数量,饼里会有"+cake2.egg+"蛋");
}
}
结果如下
package b;
public class s {//类
static int i=0;//共享的属性,人数
String name;//名称属性
public s(String name ) {
this.name=name;//记录名称
i++;//人数递增
}
public static void main(String[] args) {
// TODO Auto-generated method stub
s c1=new s("tom");
System.out.println("我是第"+s.i+++"名顾客,我叫"+c1.name);
s c2=new s("张三");
System.out.println("我是第"+s.i+++"名顾客,我叫"+c2.name);
s c3=new s("狗蛋儿");
System.out.print("我是第"+s.i+++"名顾客,我叫"+c3.name);
}
}
对象的销毁
为什么要销毁对象
每个对象都有生命周期,当对象的生命周期结束时,分配给该对象的内存地址需要被回收
垃圾回收器
在其他语言中,需要用户手动回收废弃的对象,JAVA拥有一套完整的垃圾回收机制,用户不必担心废弃的对象占用内存,垃圾回收器会自动回收无用却占用内存的资源
怎么判断对象会被JAVA虚拟机视为垃圾?主要包括两种情况
对象引用超过其作用范围,这个对象将被视为垃圾
2.这个对象被赋值为null
不足
虽然JAVA的垃圾回收机制已经很完善,但垃圾回收只能回收那些由new操作符创建的对象
某些对象不是通过new创造并获得存储空间的这些对象是无法被垃圾回收机制所识别
finalize()
那么JAVA提供了一个finalize方法
这个方法是object类方法,他被声明为protected,用户可以在自己的类中定义这个方法,定义了这个方法后,垃圾回收时会首先调用该方法
system.gc()
由于垃圾回收不受人为控制,具体的执行时间也不能明确的确定,所以finalize()方法也就无法执行,因此JAVA又提供了system.gc()方法来强制启动垃圾回收器,会主动告知垃圾回收器来清理垃圾
课后作业
package b;
public class rw {
//变量
String xing;
String ming;
String se;
String jiao;
//get set
public String getXing() {
return xing;
}
public void setXing(String xing) {
this.xing = xing;
}
public String getMing() {
return ming;
}
public void setMing(String ming) {
this.ming = ming;
}
public String getSe() {
return se;
}
public void setSe(String se) {
this.se = se;
}
public String getJiao() {
return jiao;
}
public void setJiao(String jiao) {
this.jiao = jiao;
}
//方法
public String introduce() {
return xing+"狗"+ming+"是"+se+"的";
}
public String bark() {
return xing+"狗"+ming+"正在"+jiao+"叫";
}
//构造方法
public rw()
{
}
public rw(String xing, String ming, String se) {
super();
this.xing = xing;
this.ming = ming;
this.se = se;
}
public rw(String xing, String ming, String se, String jiao) {
super();
this.xing = xing;
this.ming = ming;
this.se = se;
this.jiao = jiao;
}
}