首页 > 其他 > 详细

day_14继续关于类的专题研究

时间:2015-11-16 02:07:38      阅读:253      评论:0      收藏:0      [点我收藏+]

星期日, 十一月 15, 2015 15:32:26

?

三、再谈方法

?

----3.1方法的参数与返回值

?

----3.2方法的重载

?

? ? ? ? 方法名相同,参数的个数/类型不同

?

----3.3将数组传递到方法里

?

代码案例:

?

1~~?

package day14;

?

/* 将数组作为参数传递到方法里:

?* 1.传递一维数组*/

public class ArrayTraTest {

public static void main(String[] args){

int ar1[] = {1,3,5,7};

largest(ar1);

}

?

private static void largest(int[] ar1) {

int max = ar1[0];

for(int i= 0;i<ar1.length;i++) {

if(max < ar1[i]){

max = ar1[i];

}

}

System.out.print("max="+max);

?

}

}

?

运行结果:

?

max=7

?

2~~

代码案例:

?package day14;

?

/* 将数组作为参数传递到方法里:

?* 2.传递二维数组*/

public class ArrayTraTest {

public static void main(String[] args){

int ar2[][] ={{2,4,6,8}, {1,3,5,7}};

priE(ar2);

}

?

private static void priE(int[][] ar2) {

for(int i= 0;i<ar2.length;i++) {

for(int j = 0;j<ar2[i].length;j++) {

System.out.print(ar2[i][j]+10+"\t");

}

System.out.print("\n");

}

}

}

?

?

运行结果:

12 14 16 18

11 13 15 17

?

3.~~返回数组的方法

代码案例:

?package day14;

?

/* 返回数组的方法:

?* 在方法前加上返回数组的类型*/

public class ArrayTraTest {

public static void main(String[] args){

int ar2[][] ={{2,4,6,8}, {1,3,5,7}};

int arr21[][] = new int[2][4];

arr21 = priE(ar2);

for(int i =0;i<arr21.length;i++) {

for (int j=0;j<arr21[i].length;j++) {

System.out.print(arr21[i][i]+"\t");

}

System.out.print("\n");

}

}

?

private static int[][] priE(int[][] ar2) {

for(int i= 0;i<ar2.length;i++) {

for(int j = 0;j<ar2[i].length;j++) {

ar2[i][j] +=ar2[i][j]+10;

}

}

return ar2;

}

}

?

运行结果:

12 14 16 18

11 13 15 17

?

?

四:引用数据类型的传递

?

1~~

代码案例

?package day14;

?

/* 引用数据类型的传递*/

public class QuoteTest {

public static void main(String[] args){

Person p1 = new Person();

Person p2 = null;

p1.name = "lala";

p1.age = 18;

p2 = p1;

System.out.print("name= "+p2.name+" ?age="+p2.age);

p1 = null;

}

}

?

class Person {

String name;

int age;

}

?

?

运行结果:

name= lala ?age=18

?

?

五.引用Object类中的equals方法

?

代码案例:

?package day14;

?

public class ObjectEqualsTest {

public static void main(String[] args){

Person p1 = new Person("haha",22);

Person p2 = new Person("haha",22);

System.out.print((p1.equals(p2)?"是同一个人":"不是同一个人"));

}

}

?

class Person {

String name;

int age;

?

public Person(String name,int age) {

this.name = name;

this.age = age;

}

?

/* 覆盖Object中的equals方法*/

public boolean equals(Object o){

boolean temp = true;

Person p1 = this;

// 判断Object对象是否是Person对象

if(o instanceof Person) {

//如果是Person类实例,则向下转型

Person p2 = (Person)o;

/*调用String类中的equals方法*/

if(!((p1.name).equals(p2.name)&&((p1.age)==(p2.age)))) {

temp = false;

}

}

else {

temp = false;

}

return temp;

?

}

}

运行结果:

是同一个人

?

?

五.接口对象的实例化



? ? ? 接口是无法直接实例化的,因为接口中没有构造方法。

但是却可以根据对象多态性的概念,通过接口的子类对其进行实例化。

?

从程序中可以看到,使用接口实际上就是定义出了一个统一的标准。

?

5.1

代码案例

package day14;

?

public class InterfaceTest {

public static void main (String[] args) {

Person p = new Person();

p.fun1();

}

}

/*可以根据对象多态性的概念,通过接口的子类对其进行实例化*/

interface A {

public void fun1();

}

?

class Person implements A {

?

@Override

public void fun1() {

System.out.print("A fun1()");

}

?

}

?

?

运行结果:

A fun1()

?

?

5.2接口定义统一的标准?

?

代码案例2

?

package day14;

?

public class InterfaceTest2 {

public static void main (String[] args) {

(new Computer()).work(new MoveDisk());

new Computer().work(new MP3());

}

}

/*可以根据对象多态性的概念,通过接口的子类对其进行实例化

?* 使用接口实际上就是定义出了一个统一的标准*/

interface USB {

public void start();

public void stop();

}

/*不同的设备实现覆写接口的方法*/

class MoveDisk implements USB {

?

@Override

public void start() {

System.out.print("MoveDisk start()"+"\t");

?

}

?

@Override

public void stop() {

System.out.println("MoveDisk stop()");

?

}

?

}

?

class MP3 implements USB {

?

@Override

public void start() {

System.out.print("MP3 start()"+"\t");

?

}

?

@Override

public void stop() {

System.out.print("MP3 stop()");

?

}

?

}

?

class Computer ?{

public void work (USB u) {

u.start();

u.stop();

}

}

?

运行结果:

MoveDisk start() MoveDisk stop()

MP3 start() MP3 stop()

?

?

六、this关键字

?

----6.1 当前的对象

?

? ? ? ?构造方法是在实例化一个对象时被自动调用的=在类中所有方法里,只有构造方法是被优先调用的,

所以使用this调用构造方法必须也只能放在类中。

?

----6.2 如果程序中想用某一个构造方法调用另一个构造方法,也可以用this来实现。

?

代码案例:

package day14;

?

public class ThisTest {

public static void main(String[] args) {

Person p = new Person("yuzhou",23);

}

}

/*某一个构造方法调用另一个构造方法*/

class Person {

String name;

int age;

public Person() {

System.out.println("无参Person()");

}

?

public Person(String name,int age) {

? ?this(); //调用无参构造方法

? ?this.name = name;

? ?this.age = age;

System.out.print("参person (String name,int age)"+"\t"+name+"\t"+age);

}

}

运行结果:

无参Person()

参person (String name,int age) yuzhou 23

?

六、static关键字

?

----6.1声明静态变量

?

说明用static声明的属性是所有对象共享的。

也可以用类名直接访问。

例如Person.city = “。。。”;

也称为:类变量

?

----6.2静态方法

?

注意:

如果在类中声明一个static类型的属性,

1.则此属性既可以在非static类型的方法中使用,也可以在static类型的方法中使用。

2.但若要用static类型的方法调用非static类型的属性,就会出现错误。

?

----6.3理解main()方法

?

1.访问权限为public----java虚拟机需要调用类中的main()方法 公共方法

2.方法必须是static的----java虚拟机在执行main()时不必创建对象 ? 静态方法,可以由类名直接调用

?

?

----6.4静态代码块

?

6.4.1基础概念

?

? ? ? ? 一个类可以使用不包含在任何方法中的静态代码块,当类被载入时,静态代码块被执行,且执行一次。

静态代码块经常用来进行类属性的初始化。

?

?

? ? ?产生了两个匿名对象,而静态代码块只执行了一次,而且静态代码块优先于静态方法,

--->静态代码块可以对静态属性初始化。

?

6.4.2代码案例:

package day14;

?

public class StaticTest {

/*运行本程序,此段代码会自动被执行*/

static {

System.out.println("3.StaticTest...static");

}

public static void main(String[] args) {

System.out.println("4.public static void main(String[] args)");

/*产生了两个匿名对象,而静态代码块只执行了一次,而且静态代码块优先于静态方法,

--->静态代码块可以对静态属性初始化。*/

new Person();

new Person();

}

}

?

class Person {

public ?Person() {

System.out.println("1.public void Person()");

}

/*此段代码首先被执行*/

static {

System.out.println("2.Person...static");

}

}

运行结果:

3.StaticTest...static

4.public static void main(String[] args)

2.Person...static

1.public void Person()

1.public void Person()

?

七.final关键字的使用

?

在Java中声明类、属性和方法时,可以使用final来修饰。

? 1.final标记的类不能被继承

? 2.final标记的方法不能被子类覆写

? 3.final标记的变量(成员变量或局部变量)即为常量,只能赋值一次。

?

八、interface关键字的使用

?

----8.1基本概念

?

interface判断一个类是否实现了某个接口,

判断一个实例对象是否属于一个类。

?

----8.2格式:

? 对象 interface类(或接口)

?

?

星期日, 十一月 15, 2015 ?18:42:39

day_14继续关于类的专题研究

原文:http://yuzhouxiner.iteye.com/blog/2256924

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!