类与对象(上)

 

1.面向对象

(1) 面向对象的三大特征:

    ①封装性:保护内部的操作不被破坏; 
    ②继承性:在原本的基础之上继续进行扩充; 
    ③多态性:在一个指定的范围之内进行概念的转换。

(2) 面向对象名词扩展
    OOA:面向对象分析
    OOD:面向对象设计
    OOP:面向对象编程

2. 类与对象

Ⅰ.类与对象的定义与使用

  (1) 类:是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法); 
             对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。

  (2)在Java中定义类,使用关键字class完成。

            语法如下:

class 类名称 {
 属性1;
 属性2;
 属性n...;
 
 方法1(){}
 方法2(){}
 方法n(){}...
}

范例:定义一个Person类

class Person{
 public String name;
 public int age;
 
 public Person(String name,int age){
 this.name = name ;
 this.age = age ; 
 }
 
 public String getPersonInfo(){
 return "姓名:"+this.name+",年龄:"+this.age;
 }
}

  Ⅱ.定义(生产)对象

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

   以Person类为例, 我们可以如下产生一个Person类的实例(对象)

Person p1 = new Person();
Person p2 = new Person("Steven",25);

   范例

Person p = new Person("Steven",25);
System.out.println(p.name);
System.out.println(p.getPersonInfo());

Ⅲ.对象内存分析

   ( 1 )栈内存(虚拟机局部变量表):存放的是局部变量(包含编译期可知的各种基本数据类型、对象引用-即堆内存的地址,可以简单的理解为对象的名称),Java栈是与线程对应起来的,每当创建一个线程,JVM就会为这个线程创建一个对应的Java栈。
   ( 2 )堆内存:保存的是真正的数据,即对象的属性信息。


class Person { 
    String name ;
    int age ;
    public void get() {
        System.out.println("姓名:" + name + ",年龄:" + age);
    }
}

public class TestDemo {
        public static void main(String args[]) {
           Person per = new Person();
           per.name = "张三" ;
           per.age = 30 ;
        }
}

运行结果:

姓名:张三,年龄:30

Ⅳ.引用传递分析

3.封装和构造方法

Ⅰ. private实现封装

封装是面向对象中最复杂的概念,使用private关键字实现的封装处理只是封装的第一步(后续还有继承和多态)。

setter方法:主要用于进行属性内容的设置与修改
getter方法:主要用于属性内容的取得

private实现封装的最大特征在于:只允许本类访问,而不允许外部类访问。

Ⅱ.类的设计原则

编写类时,类中的所有属性必须使用private封装。
属性若要被外部访问,必须定义setter、getter⽅法。

Ⅲ.构造方法

①类名称 ②对象名称 = ③new ④类名称();

Ⅳ.构造方法重载

4.this关键字

Ⅰ.this调用本类属性

    当参数与类中属性同名时,类中属性方法被正确赋值。此时我们加上this关键字便可以正确给对象属性赋值。只要在类中方法访问类中属性,一定要加this关键字。

Ⅱ.this调用本类方法

this调用本类方法有以下两种情况:
①.调用普通方法:this.方法名称(参数)

②.调用构造方法:this(参数)

使用this调用构造方法时请注意:
1. this调用构造方法的语句必须在构造方法首行
2. 使用this调用构造方法时,请留有出口

   面试问题1:对象的产生需要以下两步:

①:为对象开辟内存

②:调用合适的构造函数   

Ⅲ.this表示当前对象

只要对象调用了本类中的方法,这个this就表示当前执行的对象

   面试问题2:怎么理解this?

①:this表示当前对象的引用

②:可以调用其他的构造函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值