Java面向对象编程

一、什么是面向对象

面向对象编程OOP 面向对象OO

1、面向对象的本质

以类的方式组织代码 ,以对象的方式封装数据

2、面向对象的核心思想

抽象,即对事物剥离抽取共同点,变成一个类

3、面向对象的三大特性

封装:

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

继承:

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法, 或子类从父类继承方法,使得子类具有父类相同的行为。

多态:

多态性是对象多种表现形式的体现。

现实中,比如我们按下 F1 键这个动作:

  • 如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;

  • 如果当前在 Word 下弹出的就是 Word 帮助;

  • 在 Windows 下弹出的就是 Windows 帮助和支持。

同一个事件发生在不同的对象上会产生不同的结果。

4、对象与类

  • 认识论角度: 先有对象后有类, 对象是具体的事物,类是抽象的,对对象的抽象

  • 代码运行角度:先有类后有对象。类是对象的模板

二、类与对象的关系

1、类是一种抽象的数据模型

它是对某一类事物的整体描述定义。但是并不能代表某一个具体的事物。

例如:Person类、Pet类、Car类

这些类都是用来妙手或者定义某一具体事物应该具备的特点和行为

2、对象是抽象概念的具体实例

例如:张三是人的一个具体实例

张三家的狗旺财是狗的一个具体实例

能够体现出特点,展现出功能的是具体的事例,而不是一个抽象的概念

三、创建与初始化对象

1、使用new关键字创建对象

  • 为对象分配内存空间

  • 对创建好的对象进行默认的初始化

  • 调用类中的构造器

2、类中的构造器也称为构造方法,是在创建对象时必须调用的方法

构造器特点:方法名称和类名相同;没有返回值 也不能写void

 //学生类
 public class Student {
 ​
     //属性:字段;成员变量
     String name;//默认null
     int age;//默认0
 ​
     //方法
     public void study() {
         System.out.println(this.name + "在学习");
         }
 }
 public class Application {
     public static void main(String[] args) {
         //使用new关键字实例化Student类,类实例化后会返回一个自己的对象
         Student student1 = new Student();
         Student student2 = new Student();
         //分别输出两个对象的name与age 此时对象有默认值
         System.out.println(student1.name);//null
         System.out.println(student1.age);//0
         System.out.println(student2.name);//null
         System.out.println(student2.age);//0
         //利用.属性给对象的属性附具体的值
         student1.name = "zhangdi";
         student1.age = 21;
         student2.name = "qinbowen";
         student2.age = 23;
         //输出赋值后的对象的属性值
         System.out.println(student1.name);//zhangdi
         System.out.println(student1.age);//21
         System.out.println(student2.name);//qinbowen
         System.out.println(student2.age);//23
     }
 }

四、构造器详解

1、作用

  1. new的本质是在调用构造方法

  2. 当一个对象被创建时候,构造方法用来初始化该对象, 通常给一个类的实例变量赋初值

2、特点

  1. 构造方法和它所在类的名字相同;

  2. 构造方法没有返回值。

3、分类

  1. 有参构造

  2. 无参构造

4、注意

  1. 不管你是否自定义构造方法,所有的类都有构造方法。Java 自动提供了一个默认构造方法即无参构造方法。

  2. 一旦你定义了自己的构造方法即有参构造方法,默认构造方法就会失效

    如果想使用无参构造,就必须显示的定义一个无参构造。

    IDEA中构造器快捷键:alt+insert

实例

 //一个类即使什么都不写,也存在一个无参构造方法
 public class Person {
     String name;
     int age;
 ​
     //无参构造方法,默认存在
     public Person() {
 ​
     }
     //有参构造方法,无参构造的重载
     public Person(String name) {
         this.name = name;
     }
     //定义了有参构造后,无参构造不再默认存在
     //一旦定义了有参构造,必须显示定义一个无参构造
 ​
     //还可以定义一个多参数构造方法
     public Person(String name, int age) {
         this.name = name;
         this.age = age;
     }
 }
 public class Application {
     public static void main(String[] args) {
         //编译器根据输入的参数自动选择调用哪个构造方法
         Person person1 = new Person("zhangdi");
         System.out.println(person1.name);
 ​
         Person person2 = new Person("qinbowen", 23);
         System.out.println(person2.name);
         System.out.println(person2.age);
     }
 }

五、创建对象内存分析

 public class Pet {
     //属性
     String name;
     int age;
 ​
     //方法
     public void shout() {
         System.out.println("叫了一声");
     }
 }
 public class Application {
     public static void main(String[] args) {
         Pet dog = new Pet();
         dog.name = "旺财";
         dog.age = 3;
         dog.shout();
         System.out.println(dog.name);
         System.out.println(dog.age);
         
         Pet cat = new Pet();
     }
 }
  • step1:加载Application类

  • step2:执行main方法

  • step3:加载Pet类到

  • step4:在堆内存生成一个具体对象dog

  • step5:给dog赋值

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值