System、out、println("点在圆内!
");
}else{
System、out、println("点不在圆内!
");
}
returnfalse;
}
publicstaticvoidmain(String[]args){
Pointp=newPoint(9,1);
//TODOAuto-generatedmethodstub
Circlesc=newCircles(8,p);
System、out、println(c、ares());
System、out、println(c、CirclePoint(p));
}
}
16.构造方法能不能重载?
可以
17.this在普通方法中,指的就是哪个对象?
在构造方法中,指的就是?
This在普通方法中指的就是自身,在构造方法中指的就是当前类;
18.static变量在内存中放置在哪个区?
static变量与方法为什么被称为类变量与类方法?
可以被该类所有对象共享不?
以下就是thinkinginjava里面的关于static的描述:
2、6、3static关键字
通常,我们创建类时会指出那个类的对象的外观与行为。
除非用new创建那个类的一个对象,否则实际上并未得到任何东西。
(注意,这里其实就就是说的引用与真正的对象创建问题)只有执行了new后,才会正式生成数据存储空间,并可使用相应的方法。
但在两种特殊的情形下,上述方法并不堪用。
一种情形就是只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象。
另一种情形就是我们需要一个特殊的方法,它没有与这个类的任何对象关联。
也就就是说,即使没有创建对象,也需要一个能调用的方法。
为满足这两方面的要求,可使用static(静态)关键字。
一旦将什么东西设为static,数据或方法就不会同那个类的任何对象实例联系到一起。
所以尽管从未创建那个类的一个对象,仍能调用一个static方法,或访问一些static数据。
而在这之前,对于非static数据与方法,我们必须创建一个对象,并用那个对象访问数据或方法。
这就是由于非static数据与方法必须知道它们操作的具体对象。
当然,在正式使用前,由于static方法不需要创建任何对象,所以它们不可简单地调用其她那些成员,同时不引用一个已命名的对象,从而直接访问非static成员或方法(因为非static成员与方法必须同一个特定的对象关联到一起)。
有些面向对象的语言使用了"类数据"与"类方法"这两个术语。
它们意味着数据与方法只就是为作为一个整体的类而存在的,并不就是为那个类的任何特定对象。
有时,您会在其她一些Java书刊里发现这样的称呼。
为了将数据成员或方法设为static,只需在定义前置与这个关键字即可。
例如,下述代码能生成一个static数据成员,并对其初始化:
classStaticTest{
Staticinti=47;
}
现在,尽管我们制作了两个StaticTest对象,但它们仍然只占据StaticTest、i的一个存储空间。
这两个对象都共享同样的i。
请考察下述代码:
StaticTestst1=newStaticTest();
StaticTestst2=newStaticTest();
此时,无论st1、i还就是st2、i都有同样的值47,因为它们引用的就是同样的内存区域。
有两个办法可引用一个static变量。
正如上面展示的那样,可通过一个对象命名它,如st2、i。
亦可直接用它的类名引用,而这在非静态成员里就是行不通的(最好用这个办法引用static变量,因为它强调了那个变量的"静态"本质)。
StaticTest、i++;
其中,++运算符会使变量增值。
此时,无论st1、i还就是st2、i的值都就是48。
类似的逻辑也适用于静态方法。
既可象对其她任何方法那样通过一个对象引用静态方法,亦可用特殊的语法格式"类名、方法()"加以引用。
静态方法的定义就是类似的:
classStaticFun{
staticvoidincr(){StaticTest、i++;}
}
从中可瞧出,StaticFun的方法incr()使静态数据i增值。
通过对象,可用典型的方法调用incr():
StaticFunsf=newStaticFun();
sf、incr();
或者,由于incr()就是一种静态方法,所以可通过它的类直接调用:
StaticFun、incr();
尽管就是"静态"的,但只要应用于一个数据成员,就会明确改变数据的创建方式(一个类一个成员,以及每个对象一个非静态成员)。
若应用于一个方法,就没有那么戏剧化了。
对方法来说,static一项重要的用途就就是帮助我们在不必创建对象的前提下调用那个方法。
正如以后会瞧到的那样,这一点就是至关重要的——特别就是在定义程序运行入口方法main()的时候。
与其她任何方法一样,static方法也能创建自己类型的命名对象。
所以经常把static方法作为一个"领头羊"使用,用它生成一系列自己类型的"实例"。
19.静态初始化块与main方法哪个先被执行?
静态初始化块在类加载的时候就执行,main方法的执行在静态初始化块的后面才执行。
20.一个构造方法调用另一个构造方法怎么调用?
this(),这样的调用方式必须位于第一句不?
嗯必须位于第一句;
用this必须位于第一句。
21.package的两个作用就是什么?
Package就是包用来区别类,同名类。
不同的包下不能共享数据与变量对象。
22.增加package以后,我们在DOS下编译怎么做?
Javac把包路径也一块加上即可
23.import就是用于导入包还就是导入类?
import就是用来导入包的。
24.importJava、util、*;会不会降低程序运行速度?
为什么?
会使得程序速度变慢。
25.importstatic静态导入的作用就是导入类还就是导入类的静态属性与静态方法?
Importstatic静态导入的就是静态方法
26.如果同时导入:
Java、util、Date;Java、sql、Date;在程序中怎么区分它们?
可以在创建对象的时候加入前缀
27.【上机】完成this、static、package、import的测试代码
28.Javadoc注释怎么写?
三种方式/**
*/
//
/*
*/
29.Java项目的API文档如何生成?
请将步骤写出。
步骤;
Eclipse中project中GenerateJavadoc完成
30.面向对象中的封装,追求的就是“高内聚,低耦合”。
解释一下,内聚什么?
什么叫
耦合?
就就是类与类之间尽量减少联系,不要相互影响太多,
31.封装的几个关键字:
private,default,protected,public的含义。
私有的默认的受保护的公有的
32.一般属性就是否要设置为private?
就是
33.如果属性设置为private,如何让外部访问该属性?
通过接口
34.提供getter、setter方法的操作,Eclipse中如何实现?
Source中找generategettergandsetter
35.对于boolean类型的属性,提供的getter方法就是:
getXXX或就是isXXX?
publicbooleanisFlag(){
returnflag;
}
publicvoidsetFlag(booleanflag){
this、flag=flag;
}
36.Javabean就就是只包含属性与相关getter、setter方法,不包含业务逻辑处理的类,
这种说法对不?
37.继承的好处就是什么?
提高代码的重复性
38.Java中有多继承不?
C++中有多继承不?
单继承相比多继承优势在什么地方?
39.【上机】模仿课堂上动物世界的例子,我们自己写个例子。
40.Java的继承使用哪个关键字实现?
extends
41.定义某个类时,如果没有使用extends,那么继承了哪个类?
Object
42.Java中,有没有多继承?
请说明,Java为什么取消了多继承?
没有多继承,先从Java8之前说起。
要区分“声明多继承”与“实现多继承”。
Java就是不允许“实现多继承”,简称不允许“多继承”。
但就是Java支持“声明多继承”——Java的接口的多继承——一个类可以实现多个接口(“继承”了多个接口上的方法声明),而一个接口可以继承多个接口(同样就是“继承”了多个接口上的方法声明)。
接口只允许有方法声明而不允许有实现,因而不会出现像C++那样的实现多继承的决议问题;抽象类可以有方法实现,但要遵循Java类的单继承限制,也避免了实现多继承的问题。
这就是早期Java为了与C++区分开的一个决定。
43.重写(override)指的就是什么?
方法重写指的就是继承中的,子类重写父类。
44.假如父类有main方法,子类能不能继承?
子类能继承父类的main方法,但就是要重写main方法。
子类调用父类的main方法,同时执行main方法,子类调用子类的main方法,只能执行子类的main方法,不能执行父类的main方法。
45.Object就是所有类的根类不?
就是所有类的直接父类不?
就是根类,不就是父类,
46.在哪里查瞧Object类的源代码?
在API里面
47.Object类中的toString方法能否被子类重写?
请做测试。
可以重写tostring方法
48.【上机】完成继承、Object相关的测试代码
49.super指的就是什么?
指的就是直接父类
50.构造方法中,第一个话总就是super不?
不就是,没有父类的话就不用super
51.叙述一下,有继承结构时,构造方法的调用顺序?
先调用父类的构造方法,再调用子类构造方法
52.重写中,子类的返回值类型可不可以跟父类不完全一致?
说出您的理由。
返回值类型必须一样,返回值类型,方法名,参数列表必须全部一样
53.如何判断两个对象内容就是否相同?
重写equals(()有什么要求?
equals方法,
54.举一个现实的例子,说明多态。
子类就是父类的多种表现形式
55.多态的三个必要条件就是什么?
继承,重写,父类引用指向子类对象
56.什么就是向上转型?
什么就是向下转型?
类的向上转型,与向下转型,
接口的向上转型,向下转型
57.多态的常用使用场合有哪些?
58.Java的方法绑定采用动态绑定还就是静态绑定?
动态绑定
59.final修饰变量、方法、类分别表示什么含义?
final
根据程序上下文环境,Java关键字final有“这就是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法与变量。
您可能出于两种理解而需要阻止改变:
设计或效率。
final类不能被继承,没有子类,final类中的方法默认就是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
注意:
父类的private成员方法就是不能被子类方法覆盖的,因此private类型的方法默认就是final类型的。
1、final类
final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都就是final的。
在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。
2、final方法
如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。
使用final方法的原因有二:
第一、把方法锁定,防止任何继承类修改它的意义与实现。
第二、高效。
编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。
例如:
public class Test1 {
public static void main(String[] args) {
// TODO 自动生成方法存根
}
public void f1() {
System、out、println("f1");
}
//无法被子类覆盖的方法
public final void f2() {
System、out、println("f2");
}
public void f3() {
System、out、println("f3");
}
private void f4() {
System、out、println("f4");
}
}
public class Test2 extends Test1 {
public void f1(){
System、out、println("Test1父类方法f1被覆盖!
");
}
public static void main(String[] args) {
Test2 t=new Test2();
t、f1();
t、f2(); //调用从父类继承过来的final方法
t、f3(); //调用从父类继承过来的方法
//t、f4(); //调用失败,无法从父类继承获得
}
}
3、final变量(常量)
用final修饰的成员变量表示常量,值一旦给定就无法改变!
final修饰的变量有三种:
静态变量、实例变量与局部变量,分别表示三种类型的常量。
从下面的例子中可以瞧出,一旦给final变量初值后,值就不能再改变了。
另外,final变量定义的时候,可以先声明,而不给初值,这中变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。
但就是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。
package org、leizhimin;
public class Test3 {
private final String S="final实例变量S";
private final int A=100;
public final int B=90;
public static final int C=80;
private static final int D=70;
public final int E; //final空白,必须在初始化对象的时候赋初值
public Test3(int x){
E=x;
}
/**
* @param args
*/
public static void main(String[] args) {
Test3 t=new Test3
(2);
//t、A=101; //出错,final变量的值一旦给定就无法改变
//t、B=91; //出错,final变量的值一旦给定就无法改变
//t、C=81; //出错,final变量的值一旦给定就无法改变
//t、D=71; //出错,final变量的值一旦给定就无法改变
System、out、println(t、A);
System、out、println(t、B);
System、out、println(t、C); //不推荐用对象方式访问静态字段
System、out、println(t、D); //不推荐用对象方式访问静态字段
System、out、println(Test3、C);
System、out、println(Test3、D);
//System、out、println(Test3、E); //出错,因为E为final空白,依据不同对象值有所不同、
System、out、println(t、E);
Test3 t1=new Test3(3);
System、out、println(t1、E); //final空白变量E依据对象的不同而不同
}
private void test(){
System、out、println(new Test3
(1)、A);
System、out、println(Test3、C);
System、out、println(Test3、D);
}
public void test2(){
final int a; //final空白,在需要的时候才赋值
final int b=4; //局部常量--final用于局部变量的情形
final int c; //final空白,一直没有给赋值、
a=3;
//a=4; 出错,已经给赋过值了、
//b=2; 出错,已经给赋过值了、
}}