zoukankan      html  css  js  c++  java
  • 面向对象(对象和类)

    通过编程思想来解决程序的问题:
      面向过程编程思想
      面向对象编程思想
      面向切面编程思想
      面向接口编程思想

    面向对象编程思想(OOP Object Oriented Programming):
      面向对象是基于面向过程的编程思想
      面向过程强调的是每一个功能步骤
      面向对象强调的是由对象去调用功能

    面向对象编程思想优点:
      更符合我们思考习惯的思想
      可以将复杂问题简单化
      将我们从执行者变成指挥者,角色发生了转换

    面向对象的核心是对象,对象可以是任意一个事物
    Java中使用类来描述现实世界中的元素,类是抽象的

    类的结构:
      属性: 描述对象的特征
      方法: 描述对象的行为功能

    设计对象的核心就是要确定对象具备什么功能;

    手机——功能:看电影、听音乐、聊天、拍照、打游戏

        特征:品牌、价格、形状、大小、尺寸、产地等······

    ——特征:毛色、年龄、性别、品种、体型、体重

       功能:吃、睡、抓老鼠、爬树、卖萌······

    属性:就是类的特征(数据)描述
         通过变量的方式定义属性
         属性又称为成员变量或全局变量

    创建类:(class用于定义类,一个类中可以编写该类的多个属性或方法

        public  class  类名{

        //属性

        //方法

        }

    用户类的定义:

    类其实是对象的类型,描述了一类对象,这些对象有着相同的属性和方法;比如刚才定义的User类其实并没有指代某个具体用户,每次实例化都表示通过该类型创建了一个新的对象类的编写也是Java 中自定义类型的实现

    定义好的类需要通过new实例化后才能使用,实例化后的类才会在内存中生成数据,通过类的实例化在内存中生成的数据称为对象

        public class User{

        //用户属性

        String name;

        int age;

        String sex;

        String job;

        }

    类的实例化:User user=new User();

    访问类的属性:对象名.属性名

            user.name="tom";

            user.age=20;

    方法的优点:

      对方法中的代码进行复用

      使类的业务结构分离,代码结构更清晰,便于维护管理

    方法的创建:访问修饰符   返回值类型   方法名([参数列表]){

          //方法体  相关代码

          [return ]  值

          }

    修饰符: 访问修饰符可以对方法、类、属性、包等进行作用,用于修饰添加访问范围、功能等作用

    Java的修饰符: public   protected  private   static  final  synchronized  abstracted等

    方法的返回值类型:
      没有返回值 void
      有返回值 定义返回的数据类型

    有返回值的方法:
      必须使用return 返回数据
      返回的数据类型必须和方法声明的数据类型保持一致

     方法的调用:

     1.类的外部调用方法:类名 对象名=new 类名();——实例化

              对象名 方法名();——调用方法

    2.类的内部调用方法:public void methodA(){}

              public void methodB(){

                methodA();——直接调用

              }

     方法中定义的变量和属性名重名怎么办

    使用关键字this区分

    this表示当前类的实例,使用  (this . 变量名)  即表示访问该类的成员变量

    因此定义在方法中的变量,又称为局部变量

     

    类与对象的区别:

    类是抽象的,并没有在内存中产生数据,类只是规范定义的该对象类型的结构;

    对象是实体,是在内存中创建出来的实体数据,包含了真正的数据内容;

    类与对象的联系:

    类是对象的类型,是具备相同属性和方法抽离出来的模板

    对象是根据类创建出来的实体数据

    鸟类是父类,燕子是类,燕子李三是对象

    自定义类就是自定义Java中数据类型的过程

    数据分为基本类型和引用类型,自定义的所有类都是引用类型

    基本类型和引用类型的区别:

    1.基本类型的值是结构体,直接存储在内存栈中,引用类型需要实例化的方式才能在内存栈中创建出来

    2.栈中数据可直接访问,引用类型必须要通过引用的方式来访问堆中的数据

    类中的属性(变量)在类实例化时,JVM会分配默认值

    1.int   short  long   float   double  默认为0

    2.boolean默认值为false

    3.char默认值为空字符

    4.引用类型的默认值为null(只有栈中的数据,没有堆中的数据,只有实例化以后才会产生堆中的数据) 

    NullPointException异常就是类没有进行实例化就访问其中的数据产生的

    创建类(属性和方法)

    /**
     * 人类,人的类型
     */
    public class Human {
        //属性
        //通过定义变量描述人的属性
        int age;
        String sex;
        String name;
    
    
        //方法
    
        /**
         * 自我描述的方法
         */
        public void details(){
            System.out.println("姓名:"+name+",年龄:"+age+",性别:"+sex);
        }
    
        /**
         * 购物前的准备方法
         */
        public void ready(){
            System.out.println(name+"出门前整理了帽子");
            System.out.println(name+"出门前整理了领带");
        }
    
        /**
         * 购物方法
         */
        public String shopping(){
            //方法中声明的变量由于作用域范围,仅在当前方法中生效,因此该变量称为局部变量
            //方法中有出现同名变量时,就近优先访问局部变量
            String name = "tom";
            //同一个类中,内部方法的调用可以直接访问
            //this表示当前对象的引用
            //默认情况下访问在方法内部访问的属性、方法都使用this
            this.ready();
            System.out.println(this.name+"出去进行了购物");
            //有返回值的方法必须要使用return将对应类型的数据返回
            //方法只能返回一个值
            //return的作用是强制终止所在方法的执行,并将return后的数据返回出去
            return "一颗青菜";
        }
    
    }

    测试类(调用属性和方法)

    public class HumanTest {
    
        public static void main(String[] args) {
            //实例化Human类,实例化将使类在内存生成相应的数据
            //通过实例化产生的数据又称为“对象”,又称为实体数据
         //创建第一个人 Human man1 = new Human(); //通过对象名.属性名 来访问该对象的属性 //给属性赋值 man1.name = "特朗普"; man1.sex = "男"; man1.age = 73; //通过对象名.方法名 来访问对象的方法功能 man1.details(); //有返回值的方法,必须要使用相应的类型接收返回值 String goods = man1.shopping(); System.out.println(man1.name+"买回了"+goods); //创建了第二个人 Human man2 = new Human(); man2.name = "特没谱"; man2.sex = "男"; man2.age = 50; //自我描述 man2.details(); //当尝试对为null值的对象访问属性或方法时,会产生NullPointerException异常 Human man3 = null; System.out.println(man3.sex); } }

     main方法比较特殊:

    main方法中的static不需要new就可以开辟出一个空间

    main方法要调用方法是,不管在不在同一个类中,都要进行实例化,通过(对象名 . *) 的形式才能进行调用

    带参数的方法使用:

    例子:榨汁机

    public class Juicer(){
      //通过传入的参数确定榨的是什么汁
      public String juice(String fruite){
        System.out.println("开始榨汁······");
        //通过参数确定返回值
        return fruite+"汁";
      }
    
      //调用榨汁方法
      public static void main(String[] args){
        Juicer juicer=new Juicer();
        //接收得到的果汁,在调用方法时可以传入不同的参数
        String fruitJuice=juicer.juice("苹果")
        System.out.println("获得了"+fruitJuice);
      }
    }

    例子:获取三个数中的最大值

    public class Demo{
      //判断最大值的方法,返回int
      public int getMax(int n1,int n2,int n3){
        //先将其中一个数定位最大值
        int max=n1;
        //判断其余书是否比他大
        if(n2>max){
          max=n2;
        }
        if(n3>max){
          max=n3;
        }
      //返回对比后的最大值
      return max;
    }
    
      //调用获取最大值的方法
      public static void main(String[] args){
        //实例化
        Demo demo=new Demo();
        //接收方法的返回值
        int max=demo.getMax();
        //打印输出
        System.out.println(max);
      }
    }

    方法中应只写与方法有关的内容,避免不必要的内容,不然调用时会受影响,多方调用多个东西可能会导致不通用

    返回值中若有null要返回,则返回类型要写包装类

  • 相关阅读:
    CentOS 7 配置hadoop(五) 配置sqoop(伪分布)
    CentOS 7 配置hadoop(四) 配置hive(伪分布)
    CentOS 7 配置hadoop(三) 配置hbase(伪分布)
    java高级之NIO
    字符编码与序列化
    java高级之IO流 -2
    java中的值传递和引用传递
    事务相关知识点
    mybatis中批量更新sql语句,trim、foreach标签,varchar定义理解
    java IO流之File类的使用
  • 原文地址:https://www.cnblogs.com/gfl-1112/p/12657357.html
Copyright © 2011-2022 走看看