类和对象

1、类

创建类

 public class Computer {

//修饰符public:类可以被任意访问

//类的正文都要用{}括起来

//属性:颜色、尺寸、内存、CPU

 String color;

double size;

int memory;

 String cpu;

 //方法:开机、关机、显示电脑配置

public void start() {

 System.out.println("开机...");

}

public void close() {

System.out.println("关机");

}

public void display() {

System.out.println("颜色:" + color + ",尺寸:" + size + ",内存:" + memory + ",CPU:" + cpu); }

}


public class Person {

 //属性:姓名、年龄、性别、身高、体重

String name;

 int age;

String sex;

double height;

 double weight;

//方法:走路、吃饭、睡觉、工作、显示个人信息

 public void walk() {

System.out.println("走路。。。");

 }

public void display() {

System.out.println(""); }

 }

创建对象(也叫类的实例化)

public class Test {

public static void main(String[] args) {

//创建对象(类的实例化):声明(数据类型 变量名)、分配空间(同时为属性赋默认值)、赋值(可选,因为有默认值) Computer c1 = new Computer();

c1.color = "red";

c1.size = 15.6;

c1.cpu = "i7";

c1.memory = 8;

c1.display();

Computer c2 = new Computer();

c2.color = "black";

c2.display();


Person p1 = new Person();

 p1.name = "jack";

p1.age = 12;

 p1.height = 1.5;

p1.display();

}

}


面向对象3大特征:封装、继承、多态

1、封装

//储值卡

public class CashCard {

String number;//卡号

 int balance;//余额

int bonus;//红利点数,单次充值大于等于1000得1点

  public CashCard(String n,int ba,int bo) {//自己定义的构造器,默认的构造器不提供了

number = n;

balance = ba;

bonus = bo;

 }

}

构造函数名称是与类名同名,不用声明返回类型

public class Test {

 public static void main(String[] args) {

CashCard card1 = new CashCard("A001", 500, 0);

 CashCard card2 = new CashCard("A002", 300, 0);

CashCard card3 = new CashCard("A003", 1000, 1);

CashCard card4 = new CashCard("A004", 2000, 2);

CashCard card5 = new CashCard("A005", 3000, 3); } }

2、继承

      继承定义: 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。 此处的多个类称为子类,单独的这个类称为父类(基类或超类)

    类继承语法:class Subclass extends Superclass{ }

    说明:

     子类继承了父类,就继承了父类的方法和属性。

      子类也可以创建新的属性和方法。

      子类不是父类的子集,而是对父类的“扩展”。

 Java中的类只支持单继承,不允许多重继承;

         一个子类只能有一个父类;

        一个父类可以派生出多个子类;

          子父类是相对的概念

class SubDemo extends Demo1,Demo2...//是错误 的

3、多态

多态性,可以理解为一个事物的多种表型形态。

 在Java中有两种体现:①方法的重载与重写;②对象的多态性

   public class Test2 {

 public static void main(String[] args) {

 Person s = new Student();//父类的声明,子类的实现

 }

}

1、类的成员1:

   属性 属性=变量=field

1)变量的分类:

 按照数据类型的不同:基本数据类型和引用数据类型

 按照声明的位置不同:成员变量和局部变量

   成员变量:在方法体外,类体内声明的变量称为成员变量

   局部变量:在方法体内部声明的变量称为局部变量

 2)成员变量语法格式: 修饰符 类型 属性名 = 初值;

   修饰符public:该属性可以被该类以外的方法访问

   类型:8种基本数据类型和引用类型任一都可以

3)成员变量初始化值(或者叫默认值) 当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。 除了基本数据类型之外的变量类型都是引用类型,如上面的Person及数组。

总结:对象的成员变量和数组元素都有初始化值,基本数据类型变量没有初始化值

成员变量类型     初始值

byte                          0

short                         0

int                             0

long                          0

float                          0.0

double                        0.0

char                           空格

boolean                      false

引用类型                       null

2、类的成员2:方法

 函数=方法=method

语法格式: 修饰符 返回值类型 方法名( 参数类型 形参1,参数类型 形参2,….) {

方法体语句;

 }

说明: ①修饰符:public、private、protected、缺省  ②返回值类型:8种基本数据类型和引用类型任一都可以  ③return作用: 返回方法指定类型的值(这个值总是确定的) 结束方法的执行(仅仅一个return语句)

④return和void演示

public class TestVoidReturn {

/*

 * 返回值类型为String

* return + 返回值 表示方法返回数据,数据类型和方法返回值类型一致 */

 public String test2() {

return "test2()方法";

 }

public int test3() {

 return 3;

}

/*

 * void无返回值

 */ public void test1() {

System.out.println("test1()方法");

return;  //此处return可以省略 }

/*

* break跳出循环

* continue跳出本次循环,进入下一次循环

 * return返回方法指定类型的值、结束方法的执行

 */

public void test11() {

 for(int i = 1; i <= 5; i++) {

if(i == 3) {

return;

 }

System.out.println(i);

}

 }

 public static void main(String[] args) {

 TestVoidReturn test = new TestVoidReturn();

test.test1();

String str = test.test2();

 System.out.println(str);

 int i = test.test3();

System.out.println(i);


test.test11();

System.out.println("main方法");

 }   }

⑤参数

 参数类型:就是该形式参数的数据类型。

形参:即形式参数,方法声明时,方法小括号内的参数

实参:调用方法时,实际传给形参的参数值

public class TestArgs {

//形参是基本数据类型

 public void m1(int a) {//a是形参 a=1

a = 2;

System.out.println("m1()方法中的a=" + a);

public static void main(String[] args) {

TestArgs test = new TestArgs();

test.m1(1);//1是实参

int a = 1;

test.m1(a);//a是实参

方法的重载

1)要求

 在同一个类中 方法名必须相同 ;方法的参数列表不同(①参数的个数不同②参数的类型不同)

 注意:方法的重载与方法的返回值类型无关

public class TestOverload {

 //返回两个整数的和

public int add(int x, int y) {

return x + y; }

 //返回三个整数的和

public int add(int x, int y, int z) {

 return x + y + z; }

//返回两个浮点数的和

 public double add(double x, double y) {

System.out.println("aaa"); return x + y; }

//返回三个浮点数的和

public double add(double x, double y, double z) {

 return x + y + z;

}

2)不能构成重载的情形

 参数名称不同,不能构成重载

   public int add(int x,int y){return x+y;}

   public int add(int y,int x){return x+y;}

方法名称不同,不能构成重载

  public int add(int x,int y){return x+y;}

  public int add2(int x,int y,int z){return x+y+z;}

返回值类型不同,不能构成重载

   public int add(int x,int y){return x+y;}

   public void add(int x,int y){System.out.println(x+y);

         方法的重写

前提:有子类继承父类 ,子类继承父类以后,若父类的方法对子类不适用, 那么子类可以对父类的方法重写(override overwrite)、覆盖、覆写。

 public class Person {//类

public String name;//属性

public void info() {//方法

System.out.println("姓名:" + name);

}

}

public class Student extends Person {

private String course;

private String school;

 //重写

public void info() {

System.out.println("姓名:" + name + ",课程:" + course + ",学校:" + school); }

//重载(注意:区分重写和重载)

       public void info(int i) {

}

}

3、类的成员3:构造器

构造器作用:创建对象、给创建的对象的属性赋值(又叫初始化) 若不显示声明类的构造器的话,程序会默认提供一个空参的构造器,默认构造器的修饰符与所属类的修饰符一致 ,每个类都至少有一个构造器


编写一个例子,体现封装、继承和多态

public  class Person{

 public void test() {

}

}

 public class Student extends Person {//继承

private String name;//封装

@Override

public void test()

{ System.out.println("1、多态:重写");

}

public void test(String x) {//2、多态:重载

System.out.println(x);

}

public static void main(String[] args) {

 Person p = new Student();//3、多态:父类的声明,子类的实现

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

 }

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,605评论 18 399
  • 你要是失忆就好了!我就可以继续待在你身边,而且不被你厌倦。
    小五十七阅读 64评论 0 0
  • 我的桃花源 冬日午后,常常感到慵懒、散漫,窗外阴沉沉的天,由于楼层高,凛冽的风愈发显得呼啸,给人一种强烈的窗外是一...
    yuding1981阅读 530评论 0 0
  • http://ethdocs.org/en/latest/mining.html 挖矿的概念 简介 采矿这个词来源...
    小肥爬爬阅读 705评论 0 0
  • 此刻是七月末傍晚19:08的成都,夕阳西下,下班高峰,隔着公交车窗口都能感受到外面的热浪。看着每个人下班...
    弯弯W阅读 168评论 0 0