• 面向对象:封装(一):构造函数;类的主方法;权限修饰符;对象的创建


    对象:一切皆为对象。

    对象包括两部分内容:属性(名词形容词),行为(动词)。

    对象和对象之间是有关系的。 派生(子类与父类的关系),关联,依赖

    类:对同一类别的众多对象的一种抽象。

    类,还是用来生成对象的一种模板,对象是类的一种具体化的表现。

    面向对象的三大特性:封装,继承,多态。

          一:类的定义:

    class 类名{

    访问修饰符 成员变量的定义;

    访问修饰符 成员函数(方法)的定义;

    }

    例1:

      public class Student{

      public String name;

      public void score(){

      System.out.println(name+"的成绩是97分");

    }

    }

    例2:

      public class Student {

      private String name;

      public void setName(String name){

      this.name=name;

     }
      public String getName(){

      return this.name;

    }

      void score(){

      System.out.println(name+"的成绩是97分");

      }
    }

          二:访问修饰符:(4种)

    默认的(只能在当前包中被调用);

    protecetd (可以被同类继承中的所有类调用)

    private,私有。(只能被当前所在的花括号内的代码访问到,除了这个花括号就访问不到了);

    public ,公共的(可以被所有的累访问到)

          三:类的创建:类的实例化:用类来创建对象。

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

    例如(同上面的函数):Student s = new student();

          四.构造函数:

    a.必须与类名相同

    b.不能有返回类型。

    c.自动被执行。对象new出来的时间自动被执行。

    d.一般都是public

    例1.因为成员变量是public公用的,所以当我把类实例化之后,我就可以用s.name=“张三”给name赋值,这样在输出时就会输出 张三的成绩是97分

    例2.以为成员变量是private私有的,所以当我把类实例化之后,我是没有办法用s.来调用其变量的,但是我可以在Student类里面创建一个setName方法和getName方法,但是这两个方法都必须是实例的,不能是static静态的也不能是private私有的,修饰符必须是可以访问的到的所以我们可以设置成public的。这样我们可以用s.setName和s.getName来进行赋值和取值。

          五.类的主方法

    主方法是累的入口点,他定义了程序从何处开始:主方法提供对程序流向的控制,Java编译器通过主方法来执行程序。主方法语句如下:

    public static void main(String[] args){

      方法体

    }

    主方法是静态的。要直接在主方法中调用其他方法,则该方法也必须静态的;

    主方法没有返回值;

    主方法的形参为数组。

    从这里我们就可以看出来(static是静态成员的关键字,void没有返回类型,main是函数名,String[]形参的数据类型,agrs变量名);我们是可以更改的。不过这是java中规定的默认主函数,程序一经运行jvm便会自动寻找mian函数病自动调用生成对象。

          六.构造函数与成员变量初始化的执行次序?

    1.成员变量的初始化最先执行,其次在执行构造函数,所以如果在成员变量和构造函数中对同一变量进行赋值,那么构造函数中的赋值便会覆盖成员变量的赋值!

    2.

    a.成员变量的定义,如果不赋初始值,会使用默认值。而函数内的局部变量不赋值初始值会出问题。

    b.成员变量可以被当前类的所有的成员函数都可以调用。而函数里面的变量只能在当前花括号中可以使用。

    3.在给变量赋值时有以下几种赋值方式:

    a.直接在成员变量初始化时给其赋值;

    public class Book {  

    private String shuHao;
    private String shuMing;
    private String zouZhe;
    private String chuBanShe;
    private double dingJia;

    }

    b.在构造函数中给其赋值;

    public class Book { 

      public Book(){

    this.shuHao;
    this.shuMing;
    this.zouZhe;
    this.chuBanShe;
    this.dingJia;

    }

    }

    当我把Book类实例化时,Book b=new Book();在我new的同时调用了Book();这个方法,所以构造函数是一经对象实例化时自动被执行。(如果在一个类中没有任何的构造函数时,编译器会在该类中自动创建一个不带参数的构造方法。)

    注意:this关键字:当前对象。不是当前类。

    c.在构造函数参数中定义,在new函数时进行赋值

    public class Book { 

      public Book(String shuHao,String shuMing,String chuBanShe,double dingJia){

    }

    }

    Book bo=new Book("0123355","西游记","山东出版社","100.0");

    重载:

    1.函数名相同,参数不同(数量,类型)。这两个函数就形成了重载。所谓的类型不同包括,同是两个String和一个int的构造函数,但是他们的排列位置不同(不是一一对应的那么它也是可以形成重载的)

    2.重载只跟函数名和参数有关系。

    3.重载了的函数,会自动跟据调用的实参来决定调用哪个函数。(当我在new时,会根据所填的相应的实际参数的数量和类型,自动调用对应的函数)

    4.除了构造函数可以重载,普通成员函数也可以重载。(还是2.说的只要函数名相同,参数不同(数量,类型)那么就可以形成重载)

    例:(构造函数)这些都是可以形成重载的

            public Book2(){
            this.shuMing="红楼梦";
            this.shuHao=Math.random()*1000+"";
            this.zuoZhe="曹雪芹";
            this.jiaGe=100;
        }
    
        public Book2(String sm,String sh,String zz,double jg){
            this.shuMing=sm;
            this.shuHao=sh;
            this.zuoZhe=zz;
            this.jiaGe=jg;
        }
    
        public Book2(String sm,String sh,double jg){
            this.shuMing=sm;
            this.shuHao=sh;
            this.jiaGe=jg;
        }    

    例:普通函数

            public void YouHui(){
            this.jiaGe=this.jiaGe*0.9;
        }
    public void YouHui(double dz){ this.jiaGe=this.jiaGe*dz; }
    public void YouHui(double dz,String sm){ this.shuMing=sm; this.jiaGe=this.jiaGe*dz; } 1. bo.YouHui(); System.out.println(bo.jiaGe+bo.shuMing); 2. bo.YouHui(0.4); System.out.println(bo.jiaGe+bo.shuMing); 3. bo.YouHui(0.4,"西游记"); System.out.println(bo.jiaGe+bo.shuMing);
  • 相关阅读:
    hdu 1240 Asteroids!
    hdu 1253 胜利大逃亡
    hdu 1035 Robot Motion
    hdu 1181 变形课
    hdu 1548 A strange lift
    DFS Sum It Up
    hdu 3278 Catch That Cow
    hdu 1312 Red and Black
    ACM菜鸟
    eclipse新建安卓项目点击finish后窗口无法关闭
  • 原文地址:https://www.cnblogs.com/AnswerTheQuestion/p/6224226.html
Copyright © 2020-2023  润新知