1、方法
方法其实就是非面向对象中的函数。函数是一系列代码的集合,由函数名、参数列表、返回值、函数体四部分构成。
java中方法的格式:
返回值 方法名(参数列表)
{
方法体
}
问题1:两个方法的方法名是否可以相同? 可以。当两个方法的名称相同时如何区分?第一,把两个方法放在不同的类中;
第二,用参数列表来区分。只要两个方法的参数列表不同则可以区分。 这个特征就叫做方法重载(overload)
方法重载的特征:
1 构成重载的2个或多个方法一定是定义在同一个类中的。
2 重载的2个方法的方法名必须相同,而参数列表必须不相同。返回值无关紧要。
概念:命名空间namespace。所谓命名空间就是类似于:广西省.梧州市.梧州学院.计算机系.3班.xxx
2、构造方法
构造方法和new关键字有关。我们使用new关键字由类来创造对象时,new关键字会自动调用该类的构造方法。
构成方法具有以下特点:
1 构造方法的方法名和类名一样。
2 构造方法必须没有返回值。
3 构造方法可以有多个,也就是说可以重载。
4 普通方法需要显式调用执行(如果不调用就不执行),而构造方法不用显式调用,在new的时候new关键字会自动调用
合适的(参数列表匹配)构造方法。
5 构造方法的作用:是用来初始化对象中的成员变量。
6 如果定义类时不写构造方法,编译器会帮我们提供一个默认的空的构造方法;但是如果你自己写了一个参数列表非空的构造方法,
则编译器再也不会帮你创建那个默认的空参数构造方法了。
3、访问修饰符
java中有4个访问修饰符:public protected 默认的 private。访问修饰符是用来限制别人对该变量(或方法或类)的
访问的,是为了实现封装。
public和private是最好记的。public无任何访问限制,所有的都可以访问。而private是最严格的,只有类内部可以访问,其他类均不能访问(不管是不是同一个包,也不管是不是父子类)。
protected访问限制也不大。protected只有在不同包且没有父子类关系时不能访问,也就是说如果是同一个包中就可以访问,或者不是同一个包但是有父子类关系也可以访问。
默认的访问权限比protected略小,默认访问权限只有同一个包内可以访问,只要是不同包肯定不可以访问。
概念:封装。封装是面向对象的一大特征,所谓封装就是隐藏。就是将一些内部用到而不希望外部看到(更不希望外部来操作)的东西隐藏起来。
package com.gxasz.wuzhou.java1;
public class A {
int a;
public A(){}
public A(int a)
{
this.a = a;
}
void func1(int a)
{
System.out.println("A.func1, int a = " + a);
}
int func1(double a)
{
System.out.println("A.func1, double a = " + a);
return 0;
}
}
package com.gxasz.wuzhou.java1;
public class Book {
String bookName; // 书名
String authorName; // 作者名
int noPages; // 总页数
boolean isAvailable; // 是否可用
// 构造方法
public Book()
{
}
public Book(String bookName)
{
this.bookName = bookName;
}
public Book(String bookName, String authorName, int noPages, boolean isAvailable)
{
this.bookName = bookName;
this.authorName = authorName;
this.noPages = noPages;
this.isAvailable = isAvailable;
}
public void printInfo()
{
System.out.println("this.bookName = " + this.bookName);
System.out.println("this.authorName = " + this.authorName);
System.out.println("this.noPages = " + this.noPages);
System.out.println("this.isAvailable = " + this.isAvailable);
}
public boolean isAvail()
{
if (isAvailable == true)
{
System.out.println("有这本书");
return true;
}
System.out.println("没这本书");
return false;
}
public void setAvail(boolean b)
{
this.isAvailable = b;
}
public void setBookName(String name)
{
this.bookName = name;
}
public String getBookName()
{
return this.bookName;
}
}
package com.gxasz.wuzhou.java1;
public class FangWen {
int a;
private int bbbbb;
protected int c;
public void setB(int b)
{
this.bbbbb = b;
}
public int getB()
{
return this.bbbbb;
}
public void setC(int c)
{
this.c = c;
}
}
package com.gxasz.wuzhou.java1;
public class Function {
public static void main(String[] args) {
// TODO Auto-generated method stub
//A a = new A();
//a.func1(12);
/*
Book b = new Book();
b.setBookName("钢铁是怎么炼成的");
String s = b.getBookName();
System.out.println(s);
b.setAvail(false);
b.isAvail();
*/
/*
Book b1 = new Book();
Book b2 = new Book("小人书");
Book b3 = new Book("大人书", "王二小", 32, true);
b3.printInfo();
*/
//A a = new A();
FangWen f = new FangWen();
f.a = 12;
System.out.println("a = " + f.a);
f.setB(34);
System.out.println("b = " + f.getB());
f.c = 22;
}
}