您的位置:首页 > 职场人生

黑马程序员_java修饰符学习总结

2013-05-24 04:54 246 查看
---------android培训、java培训、期待与您交流! ---------

几个概念:

类:对象的集合体,对象模板。举例说明:现实中的汽车是一个类,它具有车的共同属性和行为:如动力驱动,有四个或四个以上轮子,加油等。小汽车、面包车、卡车等都是它的子类,它们都具有汽车(其父类)的属性和行为(注意:子类也是类,它可能还有子类),这就是继承。Java只支持单继承,即一个类只能有一个父类。对象是类的具体化:一个类可以有多个对象。一个类可以有多个子类,每个子类不尽相同。所谓:“一母生九子,九子各不同”。如小汽车可以是四轮驱动也可以是两轮驱动等;桑塔纳3000有红的、白的、黑的等多种颜色(这个就是类的多态性)。我们可以使用桑塔纳3000,但并不知道它是怎么造出来的,这种对用户隐藏实现细节就是封装。类的封装、继承和多态性是面向对象编程的三个核心特征。

包:是管理类的有效机制,实际上对应一系列文件夹,管理类和平常管理文件类似。

类名要求:1、不能使用关键字;2、第一个字符不能为数字;3、首字母应该大写,同包内不能重复;4、类名应该有意义。我先面的例子为了好理解,所以没有遵守第4条。

对于修饰符问题,是阻挡在Java初学者面前的一块顽石。不管是类的还是方法或变量的,我们总是记了忘忘了记。不掌握修饰符的用法,根本就没法进行下一步的学习,所以今天又总结了一些小东西,和大家共享,希望能给初学者帮助为盼。

在以后学习中我会不断总结Java的学习内容,用以帮助学习和自勉。下面的代码复制粘贴后就可以使用,在Eclipse中没有错误。

//注意:下面类A在a包中

package a;

/*类修饰符:

* public:公共类。同包不同包的类都能访问;

* default:默认类。只能被同一包的其他类访问,默认方式不加修饰符;

* final:最终类。该类不能被继承,即该类不能有子类;

* abstract:抽象类。该类不能被实例化。

*/

/*方法和变量权限修饰符,建立在其类能访问的基础上,这点很重要

* public:公共,在哪都能访问

* protected:包私有级,不同包子类可以访问

* default:友好方法,什么都不加,包私有级,不同包子类不可以访问

* private:类私有级,只有所属类能访问

* final:最终方法,不能由子类改变

* abstract:抽象方法,无方法体

* static:类方法修饰符,类方法只能调用类方法;但它不是访问权限修饰符

* 类方法以外的方法称实例方法:实例方法可以调用其他实例方法和类方法

* 记忆方法:有static类方法的只能调用static或被别的方法调用

*/

public class A {

// 常用变量的修饰符有:public protected private static final

// 实例变量,有private只能在同一个类中使用

// 如果一个对象改变了实例变量的值,不会影响其他变量的访问

// 不同对象的实例变量将被分配不同的内存空间

// 下面以一家人举例:

public String surname;// 如姓:张为public可以被任何地方访问

/*

* protected变量同包能用,不同包不能访问,但不同包子类可以访问 举例:带家里的存折,家里人能用。儿子长大成家了,有条件可以用。

*/

protected String depositbook;

String id;

/*

* private变量同包能用,不同包不能访问,但不同包子类也不可以访问 举例:家里的存折,家里人能用。姑娘出嫁了,家里存折不让用。

*/

private String colorType;

private int size;

float a, b;// 实例变量,对下面的方法都可见

private static String depart;

/*

* 类变量,有static,其值为该类所有对象共享,不会因类的对象不同而不同 当类变量被加载到内存时,类变量就会分配相应的内存空间

* 所有实例对象都共用一个类变量,内存中只有一处空间存放变量的值 如果一个对象改变了类变量的值,其他对象得到的就是改变后的值

* 通过实例化变量,让其可以被访问

*/

public static String getDepart() {

return depart;

}

public float getA() {

return a;

}

public static void setDepart(String depart) {

A.depart = depart;

}

public void setA(float a) {

this.a = a;

}

// 常量,最终成员变量,其值不变,即常量

public final float PI = 3.14f;

// 实例方法

void sum(float x, float y) {

setA(PI);

a = max(x, y);

b = min(x, y);

}

static float getMaxSqrt(float x, float y) {

float a, b, c;// 局部变量,仅在此方法中可见

// 如果max方法中没有static下面这句话会显示错误,因为类方法不能调用实例方法

a = max(x, y);

// 下面这句没错,类方法能调用类方法

b = min(x, y);

c = a * b;

return c;

}

// 缺省或友好方法,注意static不是权限修饰符

static float min(float x, float y) {

return x <= y ? x : y;

}

// 私有方法

private static float max(float x, float y) {

return x <= y ? y : x;

}

// 公共方法

public void testPublic() {

System.out.println("This is a Publictest!");

}

// 受保护方法

protected void testProtected() {

System.out.println("This is a Protectedtest!");

}

// 最终方法,不能被子类改变

protected final boolean isLeapyer(int year) {

if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {

return true;

}

return false;

}

}

//注意:下面类B在b包中

package b;

import a.A;

public class B {

protected B(){

A test = new A();

//import a.A后可以直接调用a.A的public变量和方法

test.testPublic();

test.getA();

test.setDepart("三毛");

}

}

//注意:下面类C在B包中

package b;

import a.A;

class C extends A{

void testC(){

// C为A的子类可以调用父类A的public和protected变量和方法

testPublic();

testProtected();

isLeapyer(2000);

}

}

---------android培训、java培训、期待与您交流! ---------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: