• 2017.12.6T19_B2_3.4


    package com.xdf.bean;

    /**
     * 面向对象的3大特性
     *
     * 1.封装
     *     概念:将类的所有信息 隐藏起来不让外部类去直接访问! 而是通过对应的方法去访问!
     *     目的: 隐藏类的内部细节,安全!
     *
     *    封装的步骤:
     *      01.所有属性私有化
     *      02.创建对应的get和set      shift +alt +s
     *      03.在对应的方法中增加逻辑判断,确保数据的正确性
     *     
     *     所有的get都是获取属性值
     *     所有的set都是给属性赋值
     *    
     *
     * 2.继承
     * 3.多态
     *
     *
     */
    public class Student { // 学生类

     // shift +alt +a 私有化属性
     private int age;// 年龄
     private String name;// 姓名
     private char sex;// 性别

     public int getAge() {
      return age;
     }

     public void setAge(int age) {
      this.age = age;
     }

     public String getName() {
      return name;
     }

     public void setName(String name) {
      this.name = name;
     }

     public char getSex() {
      return sex;
     }

     /**
      * sex:用户传递过来的性别
      * 如果用户输入的是不健康的数据
      * 默认sex='男'
      */
     public void setSex(char sex) {
      if (sex == '男' || sex == '女') {
       this.sex = sex;
      } else {
       this.sex = '男';
      }
     }

     /**
      * shift+alt+s ===>toString()
      * 01.因为java中所有的类都默认继承Object
      * 02.如果我们想输出一个对象, 不是看它的内存地址,而是需要看到对象的每个属性值
      * 03.需要重写Object类中的toString()
      */
     @Override
     public String toString() {
      return "Student [年龄=" + age + ", 姓名=" + name + ", 性别=" + sex

    ************************************************************************

    package com.xdf.bean;

    public class StudentDemo {

     public static void main(String[] args) {
      // 创建Student类对象
      Student student = new Student();
      // 通过set()给对象的属性赋值
      student.setName("小黑");
      student.setAge(50);
      student.setSex('m'); // 不健康的输入
      System.out.println(student); // 如果Student类没有重写toString()则执行Object的toString()
     }

    }*************************************************************************

    package com.xdf.loading;

    /**
     * 都是购物的方法,但是根据传递的参数不同,会得到一个不同的结果!
     *
     * 方法重载    方法=行为
     * 01.在同一个类中
     * 02.方法名相同
     * 03.参数列表不同(参数个数,参数类型,参数顺序)
     * 04.与访问修饰符和返回值类型 无关
     *
     *
     * 方法重载 其实就是一个  静态的多态!
     */
    public class Student { // 学生类

     /**
      * 学生购物的方法     压马路  没买东西  也没花钱
      */
     public void buy() {

     }

     /**
      *
      * 学生购物的方法     压马路  花钱了
      */
     public void buy(double money) {

     }

     /**
      *
      * 学生购物的方法   买东西     花钱了
      */
     public void buy(double money, String something) {

     }

     /**
      *
      * 学生购物的方法   买东西带回家     花钱了
      */
     private String buy(double money, String something) {
      return "一堆东西";

    ************************************************************************

    package com.xdf.staticdemo;

    public class StaticBlock {

     // 类变量
     static int age;

     {
      System.out.println("普通代码块1");
     }

     {
      System.out.println("普通代码块2");
     }

     static {
      System.out.println("静态代码块1");
     }

     static {
      System.out.println("静态代码块2");
     }

     public StaticBlock() {
      System.out.println("无参 构造方法");
     }

     // 测试方法
     public static void main(String[] args) {
      /**
       * 执行两个静态代码块  顺序是  自上而下
       * StaticBlock.age = 5;
       */

      /**
       * 01.两个静态代码块
       * 02.两个普通代码块
       * 03.构造方法
       */
      StaticBlock sb = new StaticBlock();

    ******************************************************


    /**
     *   一个类 在被 JVM加载的时候,首先会加载类中由static修饰的所有属性,方法,代码块!
     *   并把这个static修饰的内容放进  静态存储区,便于我们共享访问!
     *  
     *   1.static可以修饰
     *      01.属性      静态属性
     *      02.方法      静态方法
     *      03.代码块  静态代码块
     *     
     *   2.static的特点
     *      01.static修饰的内容,在整个程序运行期间,只有一份,而且所有对象共享!
     *          比如说,我们在Student类中定义了一个变量如下
     *             static  int  age;
     *           Student类创建出的N个对象,都共享这个age属性!
     *           如果有一个对象更改了age属性,其他的N个对象也随着变化!
     *      02. 静态方法  中不能访问 非静态的属性和方法
     *            int  age;  //普通属性
     *          public  static  void    sayHello(){
     *            System.out.println(age);  //编译报错
     *          }
     *      03.普通的方法中可以访问静态属性和静态方法
     *           static int  age;  //静态属性
     *          public   void  sayHello(){
     *             System.out.println(age); 
     *          }
     *      04.静态属性和静态方法 可以直接通过类名访问
     *        类名.静态属性 
     *        类名.静态方法 
     *        比如说:
     *        Student类有一个普通方法 sayHello(){}
     *        我们想调用这个方法?
     *          01.实例化对象  Student  stu=new Student();
     *          02.调用方法       stu.sayHello();
     *         
     *         现在,sayHello()变成了静态方法
     *         我们怎么访问:
     *         01.  sayHello()在Student类中   无需实例化
     *         02. 直接访问   Student.sayHello();
     *       
     */
    public class Student { // 实体类

     static String staticName; // 类属性 所有的对象共享一份
     String commonName; // 对象属性 每个对象都有一份

     public void sayHello() {
      System.out.println("普通的方法");
     }

     public static void sayBye() {
      System.out.println("静态的方法");

    *********************************************************

    package com.xdf.staticdemo;

    public class StudentDemo {

     public static void main(String[] args) {
      // 实例化Student对象
      Student stu1 = new Student();
      stu1.commonName = "小黑1";

      Student stu2 = new Student();
      stu2.commonName = "小黑2";
      // 类名直接点出属性
      Student.staticName = "哈哈哈";
      // 问题? stu1的staticName是??
      System.out.println(stu1.staticName);
      System.out.println("=============================================");
      // 调用普通的方法
      stu1.sayHello();
      // 调用静态方法
      Student.sayBye();

     }

    }

    ***********************************************************************

    package com.xdf.thisdemo;

    /**
     * 公司中,会有对应的代码生成器
     *
     * 现在书写实体类的步骤
     * 01.私有化属性
     * 02.快捷键 生成set和get
     * 03.快捷键生成 有参和无参构造
     * 04.重写toString()
     *
     *
     * this的注意点:
     *   01.this()调用无参构造
     *   02.this(...)调用带参构造
     *   03.this调用构造方法的时候 只能出现在 构造方法中!
     *   04.this调用构造方法的时候  必须位于构造方法中的第一行
     *   05.this访问对象的属性或者方法的时候 可以出现在任何方法中
     */
    public class Student {
     private int age; // 年龄
     private String name; // 姓名

     // 普通的方法
     public void newInstance() {
      // this(1000, "小白");不允许调用带参构造
      // this(); // 不允许调用无参构造
     }

     public Student() { // 无参构造 方法之间可不可以相互调用
      // 调用带参构造
      this(1000, "小白");
      System.out.println("1111111");

     }

     public Student(int age, String name) {
      this.age = age; // 调用属性
      this.name = name;
      this.newInstance(); // 调用方法
     }

     public int getAge() {
      this.newInstance();// 调用方法
      return age;
     }

     public void setAge(int age) {
      this.age = age;
     }

     public String getName() {
      return name;
     }

     public void setName(String name) {
      this.name = name;
     }

     @Override
     public String toString() {
      return "Student [age=" + age + ", name=" + name + "]";

    ***************************************************************

    package com.xdf.thisdemo;

    public class StudentDemo {

     public static void main(String[] args) {
      // Student stu = new Student();
      // System.out.println(stu); // name和age 都是默认值 null 0

      Student stu1 = new Student(100, "小黑");
      System.out.println(stu1); // 调用了带参构造 属性就有值

      // 需要调用无参构造 也能给属性赋值
      Student stu2 = new Student();
      System.out.println(stu2);
     }

    }

  • 相关阅读:
    处理流之转换流
    处理流之缓冲流 buffered
    java学习笔记 字符流Reader与Writer
    java学习笔记 OutputStream与InputStream
    java学习笔记 Map接口
    java 学习笔记 Iterator 迭代器
    java学习笔记 genenic 范形
    应急响应介绍
    安全之红蓝对抗简介
    密码学基础下篇
  • 原文地址:https://www.cnblogs.com/xiaoxiao1016/p/7992047.html
Copyright © 2020-2023  润新知