【阿里云大学】Java面向对象编程笔记(更新中)

2019-10-29  本文已影响0人  无敌帅气美男子

第一章 类与对象

课时2:面向对象简介

面向过程 面向对象
面对一个问题的解决方案更多情况是面对一个问题的解决方案 模块化设计,可以重用配置

面向对象有三个主要特性:

面向对象开发的步骤:(由生活场景进行程序分析最好)

课时3:类与对象简介

对象
某一类事物的抽象概念 具体的产物
一个模板 可以使用的模板实例

类中一般有两个组成:

课时4:类与对象定义

Java中类是一个独立的结构体,所以需要用class来定义

public class Person {
    String name;//姓名属性
    int age;//年龄属性
    void tell() {//tell行为
        System.out.println("name" + name + "age" + age);
    }
}

有了类,如果需要产生对象:

有了对象需要调用对象:

例子如下:

public class C4Person {
    public static void main(String args[])
    {
        Person per = new Person();//声明实例化对象
        per.name = "Tom";
        per.age = 3;
        per.tell();//方法的调用
    }
}

如果并没有进行对象的属性内容设置,则属性内容为属性的默认值(String:null int:0)

课时5:对象内存分析

Java中类属于引用数据类型,困难之处在于要进行内存的管理。所以对内存管理进行一下分析。

堆内存 栈内存
保存的是对象的具体信息,在程序中堆内存的空间开辟由new完成 一块堆内存的地址
new的内存分配

课时6:对象引用分析

既然类本身属于引用数据类型,就牵扯到内存的引用传递,可以被不同的栈内存指向,也可以更换指向。

课时7:引用传递与垃圾产生分析

所有的引用传递的本质是一场堆内存的调戏游戏,那么也会造成辣鸡的产生,针对辣鸡产生原因产生简单分析:

第二章 深入分析类与对象

课时8:成员属性封装

在类之中的组成就是属性与方法,一般而言方法都是对外提供服务的,需要有较高的安全性,需要进行保护,需要采用封装性对属性进行保护。

set判断

课时9:构造方法与匿名对象

现在的程序在使用类的时候一般都按照了如下的步骤进行:

传统调用:

在这里插入图片描述
这样的调用很麻烦,每次都要setter getter,所以可以通过构造方法实现实例化对象中的属性初始化处理,只有在关键字new的时候使用构造方法。
Person per = new Person("Tom",18);//调用有参构造

疑问为什么构造方法不设置返回值类型;如果不返回数据,为什么不用void定义方法呢?

构造方法重载

升序或降序定义构造函数: 在这里插入图片描述
构造方法 setter getter
在实例化对象的时候设置对象的属性 除了拥有设置属性的功能,还有修改属性的功能

实例化对象的创建步骤:

  1. 定义对象名称: 类名称 对象名称 = null
  2. 实例化对象:对象名称 = new 类名称()

所以:只通过实例化对象进行类的操作也是可以的,这种形式的对象叫做匿名对象

new Person("Tom",18).tell();

以上代码通过对象进行了tell()方法的调用,但是没有任何的引用,所以使用过后会变成内存辣鸡,将被GC进行辣鸡回收与释放。

以下代码显示了构造方法(只要是方法)能传递数据类型(包括类)

class Message{
    private String title;
    public Message(String t) {
        title = t;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String t) {
        title = t;
    }
}
class Person{
    private String name;
    private int age;
    public Person(Message msg,int a ) {
        name = msg.getTitle();
        age = a;
    }
    public Message getInfo(){
        return new Message(name + ":" + age)
    }
    public void tell() {
        System.out.println("姓名" + name + "年龄" + age);
    }
}
public class No1PersonMessage {
    public static void main(String args[]) {
        Message msg = new Message("mldn");
        Person per = new Person(msg,20);
        msg = per.getInfo();
        System.out.println(msg.getTitle());
    }   
}
在这里插入图片描述

第三章 this关键字

课时10:this调用本类属性

this有三类结构

setter getter方法可以对属性进行赋值,但是在赋值的时候,采用的是如下的格式:

在这里插入图片描述
在Java程序之中“{ }”是作为结构体的边界符,那么在程序里面进行变量(参数、属性都成为变量)使用的时候都会以“{ }”作为一个查找边界(作用域),按照就近取用的原则,此时的构造方法并没有能够访问类中的属性,所以为了明确标记类中的属性和参数的区别,往往会在属性前追加一个this,表示本类的属性。
所以只要是访问本类中的属性的时候,都要加this
public Person(String n,int a) {
    this.name = n;
    this.age = a;
}
public void tell() {
    System.out.println("姓名:" + this.name + "、年龄:" + this.age);
}

课时11:this调用本类方法

上一篇 下一篇

猜你喜欢

热点阅读