ACCP8.0 java课程第二学期-关于类和对象

本章重点:构造函数,封装,重载本章难点:static关键字 this关键字

1.面向过程与面向对象的区别面向过程是在Main函数中完成功能,从开始到结束,一步一步的实现功能面向对象是各个类之间协同工作,相互影响,需要考虑哪些类,有什么属性和方法

2.如何使用面向对象进行编程2.1 抽象出类(找名词)2.2 定义属性(找特征)2.3 定义方法(找行为或者动词)
 1 /
 2 *
 3 * 现在有这样一个例子,小张到买了一个冰淇淋,他挺高兴的
 4 *   1.首先我们找名词发现出小张(人),冰淇淋(物)这两个类
 5 *   2.第二步找人有哪些特征 我们发现了名字(小张),满意度(高兴)的特征
 6 *   3.第三步发现人有哪些行为 我们通过示例发现了“买”这个动作
 7 */
 8 public class Person{
 9     private String name;//名字
10     private  int love;//满意度
11
12     public void setName(String name){
13         this.name = name;
14     }
15
16     public String getName(){
17
18         return this.name
19     }
20
21     /**
22     *  购买的方法
23     */
24     public void buy(SomeThing st){
25
26     }
27
28 }
29 class Something{
30
31   private String name;
32
33   public String getName(){
34       return name;
35   }
36 }

3.构造函数3.1 用于类进行初始化的相关操作3.2 无返回值3.3 如果类不定义构造函数,都会提供一个默认的构造函数3.4 构造函数支持重载
 1 /**
 2  * Created by niechen on 17/4/18.
 3  */
 4 public class Test3 {
 5
 6     public Test3() {
 7         System.out.println("这个是默认的构造函数");
 8     }
 9
10     public Test3(int number) {
11         System.out.println("这是一个number构造函数");
12     }
13
14     public Test3(String text) {
15         this(10);
16         System.out.println("这是一个Text构造函数");
18     }
19
20     public Test3(String... text) {
21         System.out.println("这也是一个构造函数");
22     }
23   //该方法有返回值 所以只是个普通的方法
24     public void Test3() {
25         System.out.println("这只是一个普通的方法");
26     }
27
28     public static void main(String[] args) {
29         new Test3();
30     }
31 }

4.static关键字4.1 static关键字可以定义在成员变量,方法,静态区域及内部类上4.2 static方法不能直接调用非静态成员的属性与方法4.3 static可用于所有对象的共享数据4.4 类加载的时候,就被赋值了4.5 静态内存-》静态代码块-》构造方法 (多个静态代码块按照顺序进行执行)
/** * 示例代码 *
 * Created by niechen on 17/4/18.
 */
public class Test4 {

    public static int age = 10;

    public static int number;

    static {
        age--;
        System.out.println("静态代码块中输出age:" + age);
    }

    static {
        age--;
        System.out.println("第二个静态代码块中输出age:" + age);
    }

    Test4() {
        number++;
        System.out.println("构造函数里输出age:" + age);
    }

    public static int test() {
        System.out.println(age);
        return age;

    }

    public static void main(String[] args) {
        new Test4();
        new Test4();
        Test4.test();
        System.out.println("创建对象的个数:" + Test4.number);
    }

    public static class Test2 {

    }
输出结果:
静态代码块中输出age:9
第二个静态代码块中输出age:8
构造函数里输出age:8
构造函数里输出age:8
8
创建对象的个数:2

5.this关键字5.1 可以区分于方法参数与成员变量5.2 this指的是当前的引用对象,在内存中开辟一个内存块引用自己5.3 用于在构造函数中调用其他构造函数,必须放在第一行代码中
 1 package org.lyrk.accp8.s2.chapter.one;
 2
 3 /**
 4  * Created by niechen on 17/4/18.
 5  */
 6 public class Test5 {
 7     private int number;
 8     private String name;
 9
10     public Test5(int number, String name) {
11         this.name = name;//this关键字作用之一当参数与属性名相同时,区分内部属性还是入参参数
12         this.number = number;
13     }
14
15     public Test5() {
16         this(10, "你好");//this关键字作用之一调用本类中的其他构造函数
17         System.out.println("这个是默认构造函数");
18     }
19
20     public Test5 setName(String name) {
21         this.name = name;
22         return this;//this关键字作用之一返回当前的引用对象
23     }
24
25     public Test5 setNumber(int number) {
26         this.number = number;
27         return this;
28     }
29
30     public static void main(String[] args) {
31         Test5 test5 = new Test5().setName("张三").setNumber(10);
32         System.out.println(test5.name);
33         System.out.println(test5.number);
34     }
35
36 }

6.关于常量6.1 用于描述无需改变的数值6.2 它是静态的不可变的,使用static final进行修饰 (书上只用final修饰)

7.关于封装7.1 对内实现具体细节,对外提供方法供于调用7.2 内部成员变量用private修饰符修饰,对外提供getter setter方法7.3 public > protected(第二章会讲到) > package(不加访问修饰符) > private

8.关于重载8.1 必须在同一个类,方法名相同,参数列表不同(方法参数的个数或参数类型不同),与方法返回值和方法修饰符没有任何关系8.2 重载匹配方法规则由精确到模糊,直到找到合适的方法为止
package org.lyrk.accp8.s2.chapter.one;

/**
 * Created by niechen on 17/4/17.
 */
public class Test8 {

    public static void test(int t1) {
        System.out.println(t1 + "int");
    }

    public static void test(char t1) {
        System.out.println(t1 + "char");
    }

    public static void test(double t1, double t2) {
        System.out.println(t1 + t2);
    }

    public static int test(String c,String s){return 0;}

    //public static int test(int t1){return 0;}

    public static void test(int t1, double t2) {
        System.out.println(t1 - t2);
    }

    public static void test(Integer t1, double t2) {
        System.out.println("Integer:" + (t1 - t2));
    }

    public static void main(String[] args) {
        test(10,2.0);
        test(‘c‘,2);
    }
}
输出结果:
8.0
97.0
时间: 2024-10-07 23:17:46

ACCP8.0 java课程第二学期-关于类和对象的相关文章

ACCP8.0 java课程第二学期-关于继承

本章重点: 继承的概念,重写与抽象类本章难点: 1.理解存在继承关系时创建对象时的内存调用原理 2.理解抽象类 学习方法: 1.自己多想例子并分析,有了思路立刻动手实现,不要空想社会主义 2.根据需求找父类,定子类,发现属性,归纳特征 1.继承1.1 继承是面向对象的特征之一,子类继承父类则子类能拥有父类的方法与属性,这样的好处是复用代码,使结果清晰,它是多态的必要条件1.2 需要继承的类访问修饰符不能用protected 和 private修饰1.3 Object是所有java的类的父类,如果

ACCP8.0 java课程第二学期-关于集合框架

本章重点 掌握ArrayList LinkedList HashMap与泛型集合 本章难点 泛型的理解 一 关于集合1)如果写程序时不知道运行时需要多少对象,或者需要更复杂的方式存储对象时,考虑使用集合它位于java.util包下2)集合框架包含接口,实现类,和相关算法3)Collection接口存储一组不唯一,无序的对象4)Set接口继承Collection接口,存储一组唯一无序的对象5)List接口继承Collection接口,存储一组不唯一有序的对象6)Map接口存储一组键值对的对象,ke

Java中的基本操作单元 - 类和对象

Java中的基本操作单元 - 类和对象 文本关键字:类.属性.行为.实例化.对象 一.概念浅析 说到类和对象,这都是两个比较抽象的词,如果用在程序中,那就更不知道是什么意思了.其实大家可以先不联系程序,我们在对一大堆东西分类的时候自然是有一个标准的,符合某些特征的分到一类,符合另外一些特征的分到另外一类.在每个类别中,每一样东西都有相同的特征,但是又有所差别,每一样东西就好比一个一个的对象,是一个切切实实的东西,而分类的类别就好似是一个标准或者描述,会更抽象一些. 1. 类的概念 在编程中,我们

Java 核心技术 第四章 类与对象

类:构造对象的模板和蓝图.由类构造对象的过程称为创建类的实例. 对象的特征: 对象的行为 对象的状态 对象的标识 类之间的关系: 依赖 聚合 继承 对象与对象变量: new Date() new GregorianCalendar() new GregorianCalendar(1999, 11, 31) new GregorianCalendar(1999, Calendar.DECEMBER, 31) new GregorianCalendar(1999, Calendar.DECEMBER

java.面向对象设计的核心——类和对象

面向对象的三条学习主线 java类及类的成员 属性.方法.构造器:代码块.内部类 面向对象的三大特征 封装性.继承性.多态性(抽象性) 其他关键字 this.super.static.final.abstract.interface.package.import等 面向过程(POP)与面向对象(OOP) 二者都是一种思想,面向对象是相对于面向过程而言.面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做.面向对象,将功能封装进对象,强调具备功能的对象,以类/对象为最小单位,考虑谁来做. 面向

java总结第三次//类和对象2、3

四.类和对象2 主要内容:Java类的继承.方法的重写.覆盖.访问控制.super 关键字.多态性及其应用 1.继承 要求:Java只支持单继承,不允许多重继承 一个子类只能有一个父类 一个父类可以派生出多个子类 子类继承了父类,就继承了父类的方法和属性. 在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法. 因而,子类通常比父类的功能更多. 在Java 中,继承的关键字用的是“extends”,即子类是对父类的“扩展”. 注意:子类不能继承父类中私有的(private)成员变量

java基础(二)-- 类、对象

一.类:通过封装其他数据类型达到创建新的数据类型的目的.在类里面可以包含基本数据类型和非基本数据类型 1.java语言的源代码是以类为单位存放在文件当中的. 2.类的主体当中变量有两个正式的名字:属性和成员变量. 3.创建类的引用(声明一个类的变量):类名 + 空格 +类变量名 4.创建一个类的对象(创建一个类的实体): new + 空格 + 类名 + ().创建实体过程中,让3中声明的类的变量指向这个实体. 5.由于创建的引用指向类的实体,所以变量代表了类的对象.使用类中的属性时,可以直接使用

第二十七篇 类和对象相关知识

类和对象 1. 什么叫类:类是一种数据结构,就好比一个模型,该模型用来表述一类食物(食物即数据和动作的结合体),用它来生产真是的物体(实例) 2. 什么叫对象:睁开眼,你看到的一切事物都是一个个的对象,你可以把对象理解为一个具体的事物(事物即数据和动作的结合体) (铅笔是对象,人是对象,房子是对象,狗是对象,你看到的都是类) 3.类与对象的关系:对象都是由类产生的,女娲造人,首先由一个造人的模板,这个模板就是人类,然后女娲根据类的定义来生产一个个的人 4. 什么叫实例化:由类生产对象的过程叫实例

Java学习第二篇 — 时间类的使用

1 package DateTest; 2 3 import java.util.Date; 4 5 public class Date1 { 6 public static void main(String[] args){ 7 Date d=new Date(); 8 System.out.println(d); 9 10 11 Date d2=new Date(); 12 System.out.println(d2.getTime()); 13 System.out.println(d2.