zoukankan      html  css  js  c++  java
  • JAVA入门到精通-第9讲-类.方法.封装

    静态区域块: 
     
    构造函数: public  Demo3_2()
    主函数:public static void main(String  []args)
     打印出3和4;
     当类被定义的时候,和类定义的信息已经被写到代码区了
     ,静态区域块被自动执行。

       
     这样的话,所有对象共享一个类方法;
     
     java中规则:类变量原则上用类方法去访问;
      
      静态的方法只能访问静态的变量;
     非静态的方法既可以访问静态的变量也可以访问非静态的变  量;


     
     JAVA里面的原则:尽可能把成员属性做成私有的;

      
     构造函数;
     
     
     通过这种被授权的方式public去访问私有的被封装的部分

      
     
    以工程或者项目的形式来管理的;
     
     建立一个类;

     
    Gneral-Application-Appearance-Colors and Fonts(粗体,16)

     
    双击头菜单,改变开发窗口的大小;

     Eclipse特点:当你保存的时候自动编译;
     波浪线提示语法错误;根据这样去排错;

     删除delete;

     建立一个包,包名是小写的,不超过5层;
     com.xiaoming

    建立两个包;

     
     有包可以区分相同名字的类Dog;

     

     
     把你生成的class字节码放在xiaoming的包里面;

     
     
     
     
     
     rt.jar
     所有的字节码文件通通被打成一个大包;
     
     

    java面向对象编程(2)--类变量、类方法

    什么是类变量?

    类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。

     

    如何定义类变量?

    定义语法:

        访问修饰符 static 数据类型 变量名;

     

    如何访问类变量?

        类名.类变量名  或者  对象名.类变量名

    20
     
    1
    //类变量的程序演示[Demo114.java]
    2
    public class Demo114{
    3
        static int i=1;
    4
        static{
    5
            //该静态区域块只被执行一次
    6
            i++;
    7
            System.out.println("执行一次");
    8
        }
    9
        public Demo114(){  //建立Demo114()构造函数
    10
            System.out.println("执行二次");
    11
            i++;
    12
        }
    13
        public static void main(String []args){
    14
            Demo114 t1=new Demo114();  //创建t1对象实例并调用Demo114函数
    15
            System.out.println(t1.i);
    16
     
    17
            Demo114 t2=new Demo114();
    18
            System.out.println(t2.i);
    19
        }
    20
    }
     

    -------------------------------------------------------------------------------

    什么是类方法,为什么有类方法?

    类方法是属于所有对象实例的,其形式如下:

        访问修饰符 static 数据返回类型 方法名(){}

    注意:类方法中不能访问非静态变量(类变量)

    使用:类名.类方法名 或者 对象名.类方法名

    *重点*static静态的方法可以访问static静态变量,不能访问非静态变量(类变量)

          非静态方法可以访问非静态变量(类变量)同时也可以访问static静态变量。

    x
     
    1
    //统计总学费的程序代码,加深static静态的方法由静态变量的访问[Demo115.java]
    2
    public class Demo115{
    3
        public static void main(String []args){
    4
            //创建一个学生
    5
            Stu stu1=new Stu(29,"aa",340);
    6
            Stu stu2=new Stu(29,"aa",240);
    7
            System.out.println(Stu.getTotalFee());
    8
        }
    9
    }
    10
     
    11
    //学生类
    12
    class Stu{
    13
        int age;
    14
        String name;
    15
        int fee;
    16
        static int totalFee;
    17
        public Stu(int age,String name,int fee){
    18
            this.age=age;
    19
            this.name=name;
    20
            totalFee+=fee;
    21
        }
    22
        //返回总学费[这是一个类方法(静态方法)]
    23
        //java中规则:类变量原则上用类方法去访问或操作
    24
        public static int getTotalFee(){
    25
            return totalFee;
    26
        }
    27
    }
     

     

    类变量小结

    1、什么时候需要用类变量

    案例[Demo115.java]:定义学生类,统计学生共交多少钱?

    用类变量,属于公共的属性

    2类变量与实例变量区别:

    加上static称为类变量或静态变量,否则称为实例变量

    类变量是与类相关的,公共的属性

    实例变量属于每个对象个体的属性

    类变量可以通过 [类名.类变量名]  直接访问

    类方法小结


    1、什么时候需要用类方法

    案例[Demo115.java]:定义学生类,统计学生共交多少钱?

    类方法属于与类相关的,公共的方法

    实例方法属于每个对象个体的方法

    类方法可以通过 [类名.类方法名]  直接访问

     

    -------------------------------------------------------------------------------

    java面向对象编程的四大特征

    抽象/封装/继承/多态

     

    抽象

    1、简单理解

    我们在前面去定义一个类时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模版)。这种研究问题的方法称为抽象。

     

    封装--什么是封装

    封装就是把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。

     

    封装--访问控制修饰符

    电视机的开关,对音量,颜色,频道的控制是公开的,谁都可以操作,但是对机箱后盖,主机板的操作却不是公开的,一般是由专业维修人员来玩。那么java中如何实现这种类似的控制呢?不能随便查看人的年龄,工资等隐私[Demo116.java]

     
    1
    //封装案例[Demo116.java]
    2
    public class Demo116{
    3
        public static void main(String []args){
    4
            //创建一个职员
    5
            Clerk clerk1=new Clerk("小花",24,4567.6f);
    6
            System.out.println("名字是"+clerk1.name+"薪水"+clerk1.getSal());
    7
        }
    8
    }
    9
    //职员
    10
    class Clerk{
    11
        public String name;
    12
        //private私有的,public公有的
    13
        private int age;
    14
        private float salary;
    15
     
    16
        public Clerk(String name,int age,float sal){
    17
            this.name=name;
    18
            this.age=age;
    19
            this.salary=sal;
    20
        }
    21
        //通过一个成员方法去控制和访问私有的属性
    22
        public float getSal(){
    23
            return this.salary;
    24
        }
    25
    }
     

     

    封装--访问控制修饰符

    java提供四种访问控制修饰符号控制方法和变量的访问权限:

    1、公开级别:用public修饰,对外公开

    2、受保护级别:用protected修饰,对子类和同一个包中的类公开

    3、默认级别:没有修饰符号,向同一个包的类公开

    4、私有级别:用private修饰,只有类本身可以访问,不对外公开

    4种访问级别的访问范围

    访问级别

    访问控制修饰符

    同类

    同包

    子类

    不同包

     

    Public

    受保护

    Protected

     

    没有修饰符

     

    private

     

    --必要性

    问题的提出,请看下面的一个场景[eclipse]

    现在有两个程序员共同开发一个java项目,程序员xiaoming希望定义一个类取名Dog,程序员xiaoqiang也想定义一个类也叫Dog。两个程序员为此还吵了起来,怎么办?

     

    --三大作用

    1、区分相同名字的类

    2、当类很多时,可以很好的管理类

    3、控制访问范围

     

    --换包命令

    package com.自定义名字;

    注意:打包命令一般放在文件开始处。

     

    --命名规范

    小写字母 比如 com.sina.shunping

     

    --常用的包

    一个包下,包含很多的类,java中常用的包有:

    java.lang.*   自动引入    java.util.* 工具包

    java.net.*    网络开发包  java.awt.* 包 窗口工具包

     

    --如何引入包

    语法:import ;

    比如import java.awt.*;

    我们引入一个包的主要目的要使用该包下的类

     

    定义类的改进

    在提出包后,我们类的定义就更加完善了:

    class 类名{     class 类名{     class类名{      package包名;        待定..

    成员变量;     成员变量;     成员变量;     class 类名{ 

    }               成员方法;       构造方法;       成员变量;

                    }               成员方法;       构造方法;

                                    }               成员方法;

                                                    }





       










     




  • 相关阅读:
    【转】java的string中,关于split空串总会返回单个元素的数组
    【转】Java实现将文件或者文件夹压缩成zip
    单例模式
    数据库隔离级别
    ckeditor+ckfinder
    extremecomponents
    在linux环境下重启oracle数据库,解决密码过期的问题
    20180918 begin
    hadoop免登录
    CentOS环境下通过YUM安装软件,搭建lnmp环境
  • 原文地址:https://www.cnblogs.com/xuxaut-558/p/10044156.html
Copyright © 2011-2022 走看看