类和对象

来源:互联网 发布:网站源码上传教程 编辑:程序博客网 时间:2024/06/03 05:22

补充:

简单数据类型

简单数据类型的初始值:byte (0) short(0) int (0) long(0l) float(0.0f) double(0.0) boolean(false)char(”)

引用数据类型

引用数据类型的初始值为null
引用数据类型方法传递的是复制的地址,简单数据类型传递的是复制的数据

break

break有两个地方用 for +switch(for中是跳出整个循环,switch中跳出整个switch)

类和对象

类的基本形式

public class 类名(首字母大写,有意义){

}下面用一个例子来具体说明一个类,和一个类要注意的地方。

package com.test;public class Person {    int age;//全局变量,即成员变量,也即属性    String sex;    String name;    public  Person(int age1,String sex1,String name1){        age=age1;//带参数的构造体        sex=sex1;        name=name1;    }    public Person(){    //不带参数的构造体    }    public void sleep(){//带参数的方法        System.out.println("is sleeping");    }    public String eat(String food){//不带参数的方法        System.out.println("is eating "+food);        return food;    }}

类里边所包含的内容

类里边只包含构造体 属性 方法

  1. java 默认一个无参的构造体,创建任何一种有参构造体都会将默认无参构造体,若要使用无参构造体,需再写一个无参构造体。
  2. java类中的属性又叫全局变量或者成员变量。属性尽量为名词,首字母要小写。
  3. 方法命名最好为动宾短语,方法要有返回值类型,void不需要返回值类型。在方法中声明的变量为非全局变量即局部变量,局部变量必须赋初始值。

需要注意的问题

  1. return 方法不能返回多个值,如需返回多个值,可声明数组
  2. 方法里不能再有方法,只能调用其他方法。即多个方法不能互相嵌套定义。
  3. 类外不要写东西
  4. 可变参数必须是最后一个参数(String…在参数最后)

封装

将属性封装到内部,隐藏起来,只能通过规定的方法来访问,隐藏即把某些属性设置为private,不允许直接访问,可通过某些方法访问,同样可以封装一些方法。

继承

java是单继承,每个类只有一个父类。但是一个父类可以有多个子类。

this

this关键字:一般在本类中调用,调用该方法的对象。this还可以调用构造器。this与super只能存在一个,必须写在第一行,调用本类的另一个构造器。
this调用此方法的该类的对象。

super

继承中子类默认调用父类构造器。并且必须首先调用。
super.run();调用父类的方法。
super(),调用无参构造器,可以省略。super(参数)有参构造器的继承不能被省略并且必须放子类构造器的第一行。
super.参数 调用父类的属性 super.method调用父类的方法。

调用的顺序

在主函数中调用某个子类的顺序:父类属性-》父类构造器-》子类属性-》子类构造器

重写和重载

  1. 父类和子类同名的方法,子类对父类方法重写,也叫方法的覆盖,重写的方法名,参数,返回值类型必须与父类相同。
    * 私有方法不能继承因而也无法重写。
    * 构造方法不能被继承因此不能被重写,
  2. 方法的重载:在本类中,方法名相同,参数不一样
    这里写图片描述

四种访问修饰符(修饰属性和方法)

四种访问修饰符的访问权限:(由小到大)
private-》default-》protected-》public
private只能在本类中使用;
default可以在本类和同包中使用;
protected可以在本类,同包,还可以在不同包的子类中使用;
public可以被任何类使用。

封装类

为了实现java的统一,实现面向对象,将java中的8个简单数据类型封装成引用数据类型。这里用int举例说明。

int i=Integer(10)表示自动拆包
Integer j=10 表示自动装包

package com.baidu.jicheng;public class Bao {    public static void main(String[] args) {        Integer i1=new Integer(5);        Integer i2=new Integer(5);        int i3=5;        int i4=5;        Integer i5=5;//自动封装成包         int i6=new Integer(5);//自动拆包        System.out.println("i1==i2为"+(i1==i2));//false        System.out.println("i3==i5为"+(i3==i5));//i5自动拆包        System.out.println("i1==i6为"+(i1==i6));//i1自动拆包        System.out.println("i5==i6为"+(i5==i6));//i5自动拆包        System.out.println("i3==i4为"+(i3==i4));//        System.out.println("(i1.equals(i2))为"+(i1.equals(i2)));//按序比较内容,结果为true    }}                       

这里写图片描述

继承中this的一个例子

这里给出一个父类Student类,一个子类XiaoMing类继承于父类,然后通过Test类来调用,然后通过运行结果查看this所代表的到底是什么。

父类

package com.jicheng.test;public class Student {    private int number;    public int getNumber() {        return number;    }    public void setNumber(int number) {        this.number = number;    }    String name;    String sex;    public Student(){        this.run();        System.out.println("学生类的无参构造器");    }    public Student(int n){        this.number = n;            //System.out.println(number);    }    public void study(String course){        System.out.println("is studying : "+course);        System.out.println("学生类的方法");    }    public void run()    {        System.out.println("父类的run方法");    }}

子类

package com.jicheng.test;public class XiaoMing extends Student{    int number;    String name;    String sex;    String address;    public XiaoMing(String grade){        //super();        super.setNumber(4);        System.out.println("suo chu nianji: "+grade);        System.out.println("小明类的有参构造体");    }    public XiaoMing(){        this("");    }    public void run(){        super.run();        System.out.println("小明类的run方法");    }}

Test类

package com.jicheng.test;public class Test {    public static void main(String[] args) {        XiaoMing xiao=new XiaoMing("七");            System.out.println(xiao.getNumber());        Student stu = new Student();        System.out.println(stu.getNumber());    }}

运行结果:
这里写图片描述
如果test类中创建对象的时候使用无参构造器,就可以使用到this的构造体的调用。通过运行结果可以看到一步一步的调用,最后this所代表的对象究竟是哪个。

0 0
原创粉丝点击