JavaSE篇学习之路:(五)【面向对象------上】

简介: 面向对象是指更符合人的思维方式,面向对象更容易接受。

第一章:基础概要



1.1什么是面向对象?


更符合人的思维方式,面向对象更容易接受。

将射界分割成不同的单元,每个单元都实现,


2.1面向对象的三大特征。


封装(private),继承(extends),多态。


3.1类和对象的概念。


1 什么是类?


抽象总结的一个结果,现实中不存在,抽象的概念。


2.什么是对象?(实例)

实际存在的个体。


举例:宋小宝,姚明是对象,属于“明星”这个类。


2.png


在Java中,要得到对象,必须定义类。类是一个模板,描述的是对象的共同特征。共同特征包括:属性和方法。(类=属性+方法)


3.类的定义:


[修饰符列表] class 类名{

类体=属性+方法;(属性为变量,方法为动作或行为)

}


//定义一个学生类
public class Student{
//学生类具有学号和名字属性
  int no;//学号
  String name;//姓名
  //方法
  public void doSome(){
    System.out.println("我是一个学生");
  }
}


类名为引用数据类型,方法体中的变量为局部变量,方法体外的变量为成员变量(属性)

成员变量分为静态变量和实例变量。


4.对象的创建


new 类名(); 一个类可以创建多个对象。

类名 变量名=new 类名();


//new了一个Student对象
Student s=new Student();


5.实例变量


对象成为实例,实例变量是:对象级别的变量。

public class 明星类{

double height;

}

身高这个属性所有的明星对象都有,但是每一个对象都有“自己的身高值”。

假设创建10个明星对象,height变量应该有10份。

所以这种变量被称为对象级别的变量。属于实例变量。


6.对象和引用的区别。


对象是new出来,在堆中存储。

引用:保存对象内存地址的变量。


2.png


7.访问实例变量


引用名.实例变量名。


Student s1=new Student();
s1.name;//访问name实例变量
s1.no;//访问no实例变量


8. 空指针异常


“空引用”访问实例相关的数据时,都会出现空指针异常。


2.png



第二章:构造方法



1.1什么是构造方法?


构造方法是一个特殊的方法,能够创建对象,以及给对象属性赋值。

当一个类中没有提供任何构造方法,系统默认提供一个无参数的构造方法。这个无参数的构造方法叫做缺省构造器。

当一个类中手动的提供了构造方法,那么系统将不再默认提供无参数构造方法。建议将无参数构造方法手动的写出来,这样一定不会出问题。


2.1语法结构


[修饰符列表]  构造方法名(形参列表){
    构造方法体;
}


注意:

1.调用构造方法:使用new调用。

2.修饰符用public。

3.构造方法名与类名一致,不需要指定返回值类型。


 

    public Student() {
    no=12312313; //学号赋值
    name="张三";//姓名赋值
    }


构造方法支持方法重载吗?


构造方法是支持方法重载的。在一个类当中构造方法可以有多个。并且所有的构造方法名字都是一样的。

对于实例变量来说,只要你在构造方法中没有手动给它赋值,统一都会默认赋值。默认赋系统值。


第三章:封装(private)



1.1什么是封装?作用?


现实生活中有很多现实的例子都是封装的,例如:


 手机,电视机,笔记本电脑,照相机,这些都是外部有一个坚硬的壳儿。

 封装起来,保护内部的部件。保证内部的部件是安全的。另外封装了之后,

 对于我们使用者来说,我们是看不见内部的复杂结构的,我们也不需要关心

 内部有多么复杂,我们只需要操作外部壳儿上的几个按钮就可以完成操作。


封装的作用有两个:


1.保证内部结构的安全。2.屏蔽复杂,暴露简单。


2.1怎么进行封装,代码怎么实现?


第一步:属性私有化(使用private关键字进行修饰。)

第二步:对外提供简单的操作入口。


代码演示:


class Student{
   private int no;
   private String name;
    public Student() {
    no=12312313;
    name="张三";
    }
}


一个类体中的数据封装后,必须通过一个入口进入。


3.1 set()和get()方法


封装的代码实现两步:


第一步:属性私有化
第二步:1个属性对外提供两个set和get方法。外部程序只能通过set方法修改,只能通过get方法读取,
可以在set方法中设立关卡来保证数据的安全性。
  set和get方法都是实例方法,不能带static。
  不带static的方法称为实例方法,实例方法的调用必须先new对象。
  **set和get方法写的时候有严格的规范要求:
    set方法长这个样子:
      public void set+属性名首字母大写(1个参数){
        xxx = 1个参数;
      }
    get方法长这个样子:
      public 返回值类型 get+属性名首字母大写(无参){
        return xxx;
      }**


第四章:static 和this关键字



1.1 static关键字


1.static修饰的统一都是静态的,都是类相关的,不需要new对象。直接采用“类名.”访问。

2.当一个属性是类级别的属性,所有对象的这个属性的值是一样的,建议定义为静态变量。

3.static修饰的变量和方法都是静态的。

4.类加载时初始化,存储在方法区。

5.static静态代码块,类加载时执行,只执行一次,在main方法前执行,按自上而下的顺序。(记录日志)


static{
  Java代码;
}


6.实例代码块在构造方法前执行,调用一次执行一次。


{
  Java代码;
}


2.1 this关键字


1、this是一个关键字,是一个引用,保存内存地址指向自身。

2、this可以使用在实例方法中,也可以使用在构造方法中。

3、this出现在实例方法中其实代表的是当前对象。

4、this不能使用在静态方法中。

5、this. 大部分情况下可以省略,但是用来区分局部变量和实例变量的时候不能省略。

6、this() 这种语法只能出现在构造方法第一行,表示当前构造方法调用本类其他的

构造方法,目的是代码复用。


代码演示:


class Student{
   private int no;
   private String name;
    public Student() {
        this(123,"张三");
    }
    public Student(int no, String name) {
        this.no = no;
        this.name = name;
    }
    public int getNo() {
        return no;
    }
    public void setNo(int no) {
        this.no = no;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}



相关文章
|
5月前
|
编译器 C语言 C++
C++入门第四篇----详解C++类和对象知识点(下)
C++入门第四篇----详解C++类和对象知识点(下)
34 0
|
5月前
|
编译器 C语言 C++
C++入门第四篇----详解C++类和对象知识点(上)
C++入门第四篇----详解C++类和对象知识点(上)
39 0
|
4天前
|
机器学习/深度学习 Java Python
Java面向对象知识体系---基础版
Java面向对象知识体系---基础版
|
存储 IDE Java
【JavaSE成神之路】Java面向对象(上)
哈喽,我是兔哥呀,今天就让我们继续这个JavaSE成神之路! 这一节啊,咱们要学习的内容是Java的面向对象。
138 1
|
IDE Java 编译器
【JavaSE成神之路】Java面向对象(下)
哈喽,我是兔哥呀,今天就让我们继续这个JavaSE成神之路! 这一节啊,咱们要学习的内容还是Java的面向对象。
JavaSE:第四章:面向对象上
JavaSE:第四章:面向对象上
JavaSE:第四章:面向对象上
|
存储 Java 大数据
大数据学习记录---JAVA篇---面向对象基础部分
第二部分学习面向对象相关知识,这一部分其实不太熟悉,因为也不常写,记录一些知识点,以便后续回忆。
74 1
大数据学习记录---JAVA篇---面向对象基础部分
JavaSE篇学习之路:(六)【面向对象------中】
继承是指一个对象直接使用另一对象的属性和方法;多种形态是指多种状态,编译和运行有两个不同的状态:编译期叫做静态绑定,运行期叫做动态绑定。
JavaSE篇学习之路:(六)【面向对象------中】
|
Java C++
JavaSE篇学习之路:(七)【面向对象------下】
抽象类是指半抽象,有构造方法,单继承;接口是指完全抽象,无构造方法,多继承,一个类多个接口,只允许常量和抽象方法。
JavaSE篇学习之路:(七)【面向对象------下】
|
小程序 Java
JavaSE篇学习之路:(四)【函数or方法】
方法定义就是具有特定功能的一段 独立小程序,可以被多次使用,实现代码复用,提高复用性。