• java学习总结02


     1 import java.util.Scanner;
     2 
     3 public class PersonDemo {
     4         public static void main(String[] args){
     5             
     6             person p1 = new person("Xiaolei", 20);
     7             p1.setName("lifang");
     8             String newname = p1.getName();
     9             System.out.println(newname);
    10             
    11             
    12     }
    13 }
    14 
    15 class person{
    16     String name;
    17     int age;
    18     person(String name, int age){
    19         
    20         System.out.println(name + " age is " + age);
    21         cry();
    22     }
    23     
    24     
    25     public void setName(String n){
    26         name = n;
    27     }
    28     public String getName(){
    29         return name;
    30     }
    31     
    32     public static void cry(){
    33         System.out.println("cry...");
    34     }
    35 }

    最近学完了core java的第四章类与对象部分,还是觉得要来做一个总结,因为很多特性在学习后会开始遗忘,好记性不如烂笔头。

    java是一门面向对象的语言。

    类是是一个具有相同特性的所有元素的大集合,是创建的对象模板存放的地方,创建的对象成为类的实例。每要创建一个对象,它就要有相对应的类,类中有对象的属性,对象的初始化,对象所依赖的方法等。

    类与类之间有三个关系

    1.依赖 一个类需要访问另一个类里面的信息

    2.继承 一个类B和类A有关系,但是B存在除了A以外的多余功能,那么就说类B继承类A。A成为超类,B称为子类。如经理manager是超类,员工staff是子类。用extends关键字

    class B extends A
    {
    
    }

    因此,子类的功能比超类更丰富,在设计类的时候应该将通用的方法放在超类中,而将特殊的功能放在子类中。当需要调用子类继承超类的变量时,用super关键字,如super.risemoney。

    在继承的时候,子类唯一没有继承的是超类的构造方法,所以要用super关键字来指定调用超类中的构造方法。

    B(){

    super(参数列表);

    }

    否则就会出现错误。因为java不会给已经有了构造函数的类自动添加构造方法。所以解决办法也可以在原来的超类中自动添加一个空的构造函数。

    3.聚合

    在实现一个类的时候,由于公有数据十分危险,所以应当将所有的数据域设计为私有的,通过private关键字。

    对象

     对象有三个主要的特性
    1.对象的行为———— 可以对对象施加哪些操作,可以对对象施加哪些方法。
    2.对象的状态———— 当施加那些方法的时候对象是怎么响应
    3.对象的标识———— 如何辨别具有相同行为和状态的不同对象
     
    对象在类中定义的属性称作实例域,方法用于操作对象以及存取它们的实例域
     
    每次创建对象后,要用构造器对对象进行初始化。
    1.构造器名与类相同
    2.每个类可以有一个以上的构造器
    3.构造器有0个1个或多个参数
    4.构造器没有返回值
    5.构造器总是伴随着new操作一起调用
    构造器和函数可以重载,重载是名字相同但参数不同,包括类型或者数目。
    构造器中可以有个初始化块,它是每一个构造器所共有的部分。格式是一个大括号括好的部分
    this关键字
    如果代码这么写
    //这样很影响代码的阅读性
    class
    person { String name; int age; person(String name, int age) { name = name; age = age } }

    所以使用this关键字就是区分隐式参数和显式参数。显式参数即在括号内的参数,隐式参数没有直接传递到。

    //这是修改后的代码
    class person
    {
        String name;
        int age;
        person(String name, int age)
        {
            this.name = name;
            this.age = age
        }
    }

    this的作用可以理解为引用的的对象替代。这个写法可以将实例域和局部变量明显的区分开。

    final实例域

    如果在构造器构造一个值以后,某个域在后续的操作中不能再修改,那么使用finnal关键字。 private final String name

    静态域与静态方法

    static关键字

    静态域是所有类都共有(共享)的一个域,每个域都会在这里获得一份拷贝。即如果好几个类都会有相同的部分,操作或者是实力域,那么可以创建一个静态的类,在里面放这个共享的东西。如果不加static关键字的话,那么只有这个类的对象可以调用。

     
     封装
    • 封装对象

    构造函数是对对象进行的封装

    • 封装对对象的操作

    将对对象的操作,包括功能,判断等进行封装,由对象进行调用

    • 封装对象的内部数据

    对某些数据用private修饰可以隐私化,这些数据不能被篡改,只能通过对应的修改和取得方法去改变

     匿名内部类

    new 父类/接口() {

    //类本体操作

    };

    
    
  • 相关阅读:
    使用mt_rand代替rand
    array_diff 不注意的坑
    stackoverflow 技术问答社区
    js检查浏览器是否处于隐身模式
    api数据接口
    图像识别api
    ionic creator(ionic生成器)
    商城金币设计
    details和summary标签
    iOS多线程编程之NSOperation的基本操作
  • 原文地址:https://www.cnblogs.com/xiaolei-meow/p/6528304.html
Copyright © 2020-2023  润新知