1.构造函数可否为private、protected?
import java.util.Random;
import java.util.Arrays;
class test {
public static void main(String[] args) {
tmp num1=new tmp();
tmp num2=new tmp(1);
tmp num3=new tmp(1.0);
/*int[] num=new int[20];
java.util.Random r=new java.util.Random();
for (int i=0;i<num.length;i++) {
num[i]=(r.nextInt()%20+20)%20;
}
for (int i : num) {
System.out.print(i+" ");
}
Arrays.sort(num);
System.out.println("");
for (int i : num) {
System.out.print(i+" ");
}//*/
}
}
class tmp{
public tmp()
{
System.out.println("public");
}
public tmp(int i)
{
System.out.println("private");
}
public tmp(double i)
{
System.out.println("protected");
}
}
输出:
2.什么时候把父类中的成员属性设置为私有?举例
不希望被外部调用的方法和成员应该设为私有。
例:对外公开的api,无需将api内部调用的函数设为public,只需设为private就行了。
3.举例public、private、defualt、protected在类、类的属性、类的方法调用。
test.java
import show.show;
class test extends show{
public static void main(String[] args) {
test num=new test();
num.showinfo1();
num.showinfo4();
}
}
show.java
package show;
public class show {
public static void main(String[] args) {
// TODO 自动生成的方法存根
show num=new show();
num.showinfo1();
num.showinfo2();
num.showinfo3();
num.showinfo4();
}
public void showinfo1()
{
System.out.println("public");
}
private void showinfo2()
{
System.out.println("private");
}
void showinfo3()
{
System.out.println("default");
}
protected void showinfo4()
{
System.out.println("protected");
}
}
class tmp extends show{
public static void main(String[] args) {
tmp num=new tmp();
num.showinfo1();
//num.showinfo2();//IDE提示不可访问
num.showinfo3();
num.showinfo4();
}
}
4.构造器互相调用
class test {
private String strtmp;
public test(int num){
strtmp=num+" is ";
}
public test(String str){
this(1);
strtmp+=str;
}
public void show(){
System.out.println(strtmp);
}
public static void main(String[] args) {
test n=new test("int");
n.show();
}
}
输出:
1 is int
5.Supper()调用父类指定构造器
class show{
private int i;
public show(){
i=1;
}
public void showinfo(){
System.out.println("i = "+i);
}
}
class test extends show{
public test(){
super();
showinfo();
System.out.println("子类");
}
public static void main(String[] args) {
test n=new test();
}
}
输出:
i = 1
子类
6.完成一个覆盖的例子(修改其返回值)
class show{
private int i;
public void show(int i){
this.i=i;
}
public int geti(){
return i;
}
}
class test extends show{
private int i;
public int geti(){
return i*i;
}
public static void main(String[] args) {
}
}
7.Super与this的使用,及两个方法名一样参数一样,返回值不一样 举例
class show{
public int getarea(int i,int j){
return i*j;
}
}
class test extends show{
public double getarea(double i){
return i*i;
}
public static void main(String[] args) {
}
}