Java学习笔记8 类和对象

类和对象
  1. 面向对象程序设计是:

    • 将数据及对数据的操作封装在一起,成为一个不可分割的整体

    • 同时将具有相同特征的对象抽象成一种新的数据类型—类

  2. 面向对象和面向过程的区别:

    面向过程面向对象
    设计思路自顶向下、层次化、分解自底向上、对象化、综合
    程序单元函数模块对象
    设计方法程序 = 算法 + 数据结构程序 = 对象 = 数据 + 方法
    优点相互独立,代码共享接近人的思维方式 模拟客观世界
    缺点数据与程序不一致 维护困难客观世界的无序性 概念不成熟
  3. 在面向对象程序设计中,抽象数据类型是用“类”来代表的;

    Java是面向对象语言,类是客观事物的抽象 , 而对象是类的实例;

  4. 面向对象最重要的三大特征是:封装、继承、多态

    • 封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。继承机制允许创建分等级层次的类;

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

    • 多态同一个行为具有多个不同表现形式或形态的能力。是指一个类实例(对象)的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口;

  5. 类:

    • 类的名字由大写字母开头而单词中的其他字母均为小写;如果类名称由多个单词组成,则每个单词的首字母均应为大写,把这些单词连接在一起,即不要使用下划线分割单词,例如:OrderList;

    • 如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如:XMLExample;

    • 声明方式:

      【访问权限修饰符】【修饰符】 class 类名 {

      成员列表

      }

  6. 成员变量:

    • 成员变量是类中特有的属性变量;

    • 成员变量的类型可以是Java中任意的数据类型,包括基本数据类型,类,接口,数组等;

    • 在类中声明成员变量的格式:

      【变量修饰符】 【变量数据类型】 变量名1,变量名2【=变量初值】…;

  7. 属性:

    • 成员变量的类型可以是Java中任意的数据类型,包括基本类型,类,接口,数组等;

    • 声明方式:

      【访问权限修饰符】【修饰符】 数据类型 属性名(=值)

  8. 方法:

    • 访问修饰符:public、protected、 默认的(同包资源可以访问)、private(只有当前类可以访问) 。注意:方法一般用public;

    • 修饰符:static等;

    • 返回值类型:如果方法需要有返回值,我们就写返回相应的类型名,并且再方法体中应该返回相应的数据类型的值,如果没有返回值,返回类型写void;

    • 声明方式:

      【访问修饰符】【修饰符】返回值类型 方法名称(参数){

      ​ **//执行 **

      Return 返回值;

      }

  9. 在Java中万事万物皆对象

    事实上,Java离完全的面向对象编程语言还有最后的一小步距离,因为Java中存在基本数据类型,而后续以Java为目标的语言如C#则真正实现了万物皆对象,Java用包装类型来应对;

    • 对象依赖于类存在(模板-个体实例)

    • 在程序中应该使用的是对象

    • 分析过程先有对象后有类;开发过程先有类后有对象

  10. 类是描述对象的“基本原型”,它定义一种对象所能拥有的数据和能完成的操作;

    • 在面向对象的程序设计中,类是程序的基本单元,最基本的类由一组结构化的数据和在其上的一组操作构成;

    • 类是同等对象的集合与抽象。它是一块创建现实对象的模板。

    • 对象是类的实例,对象是面向对象编程的核心部分,是实际存在的具体实体,具有明确定义的状态和行为;

    • 一个完整的类:

      完整的类结构
  11. 在程序中使用对象,要了解对象的三个主要特征:

    • 对象的行为:可以对对象施加哪些操作或方法;
    • 对象的状态:当施加那些方法时,对象如何响应;
    • 对象的标识:辨别具有相同行为与状态的不同对象;
  12. 对象是典型的引用数据类型,因此和数组相似,初始化时需要使用new运算符从堆中分配内存;

    • 步骤是:
      • 说明新建对象所属的类名;
      • 说明新建对象的名字;
      • 用new为新建对象开辟内存空间;
    • 使用已经定义好的类,创建该类对象的过程称为“实例化”;
    • new是“为新建对象开辟内存空间”的运算符;它以类为模板,开辟空间并实例化一个对象,返回对该对象的一个引用(即该对象所在的内存地址);
    • 使用成员运算符(.)来访问成员,使用对象.成员属性或者成员方法;
    • 创建对象的一般语法是:类名 引用名 = new 类名( ) ;

    实例代码:

    public class Student{
        //属性:【访问权限修饰符】 数据类型 属性名
        int id;//学号
        String name;//姓名
        String schoolName;//学校名称
        double score;//分数
        //方法一:学习
        public void study(){
            System.out.println("学生正在学习");
        }
        //方法二:吃饭
        public void eat(){
            System.out.println("学生正在吃大餐");
        }
        //方法三:睡觉
        public void sleep(){
            System.out.println("学生正在睡大觉");
        }
        //方法四:敲代码
        public void writeCode(){
            System.out.println("学生敲了一夜代码");
        }
    }
    
    public class StudentTest {
        public static void main(String[] args) {
            //创建对象
            Student student1=new Student();
            //为对象赋值
            student1.name="张三";
            student1.id=20200814;
            student1.score=88;
            //输出对象信息
            System.out.println("学生id:"+student1.id);
            System.out.println("学生姓名:"+student1.name);
            System.out.println("学生分数:"+student1.score);
            //调用方法
            student1.eat();
            student1.sleep();
            student1.study();
            student1.writeCode();
        }
    }
    
  13. 封装是与对象有关的一个重要概念

    • 形式:将数据和行为组合在一起,并对对象的使用者隐藏数据的实现方式;

    • 属性由变量表示,属性名称由类的每个对象共享;

    • 每个特定的对象都有一组特定的实例属性值,这些值的集合就是这个对象的当前状态,只要向对象发送一个消息,它的状态就有可能发生改变;

    • 要不违背封装特性,应该将属性私有化;

    • this代表的是指向自身的一个引用;

    实例代码:

    public class Student{
        //属性:【访问权限修饰符】 数据类型 属性名
        //为了满足f封装的思想,将数据隐藏,而将属性私有化
        private int id;//学号
        private String name;//姓名
        private String schoolName;//学校名称
        private double score;//分数
     	//通过get,set方法间接访问属性
        //设置各个属性的get方法
        public String getName(){
            return name;
        }
        public int getId(){
            return id;
        }
        public double getScore(){
            return score;
        }
        public String getSchoolName(){
            return schoolName;
        }
        //设置各个属性的set方法
        public void setId(int id) {
            //This代表的是指向自身的一个引用
            //属性=参数
            this.id = id;
        }
        public void setName(String name) {
            this.name = name;
        }
        public void setSchoolName(String schoolName) {
            this.schoolName = schoolName;
        }
        public void setScore(double score) {
            this.score = score;
        }
    
        //方法一:学习
        public void study(){
            System.out.println("学生正在学习");
        }
        //方法二:吃饭
        public void eat(){
            System.out.println("学生正在吃大餐");
        }
        //方法三:睡觉
        public void sleep(){
            System.out.println("学生正在睡大觉");
        }
        //方法四:敲代码
        public void writeCode(){
            System.out.println("学生敲了一夜代码");
        }
    }
    
    public class StudentTest {
        public static void main(String[] args) {
            //创建对象
            Student student1=new Student();
            //通过get,set方法间接访问属性
            //为对象赋值
            student1.setId(20200815);
            student1.setName("张三");
            student1.setScore(88);
            //输出对象信息
            System.out.println("学生id:"+ student1.getId());
            System.out.println("学生姓名:"+ student1.getName());
            System.out.println("学生分数:"+ student1.getScore());
            //调用方法
            student1.eat();
            student1.sleep();
            student1.study();
            student1.writeCode();
        }
    }
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值