面向对象进阶时,if语句写错位置
这周blog我也不知道要写什么,因为这章我其实学得有点懵,前面那几天我纠结了好久代码,一直不知道原因错在哪里。后来经过询问老师才知道自己调用错了构造方法,相信也有跟我一样的新手会犯这个错误。
我在创建关于介绍书的类的时候,有这么一个规定,如果书的页码少于200页就设置为默认200页。
我的代码是这样写的:
package day05_task;
public class BookTest {
public static void main(String[] args) {
Book b1 = new Book("黑苹果", 120);
Book b2 = new Book("灰栗子", 500);
b1.detail();
b2.detail();
}
}
class Book{ //定义一个类
//Book(){} //构架一个无实参的编译器
Book(String title, int pageNum){ //构建一个有实参的编译器
this.title = title; //赋值 变量给当前属性
this.pageNum = pageNum;
}
//私有化类的属性
private String title;
private int pageNum;
void detail(){
System.out.println("书名:" + getTitle() + "\n" + "页数:" + getPageNum() + "\n");
}
//获取可设置属性变量的权限 通过 public 和set语句
public void setTitle(String title){
this.title = title;
}
public String getTitle(){
return title;
}
public void setPageNum(int pageNum){
if(pageNum < 200)
this.pageNum = 200;
}
public int getPageNum(){
return pageNum;
}
}
大家可有发现什么错误吗?
我把public void setPageNum(int pageNum){
if(pageNum < 200)
this.pageNum = 200;
}
写在了成员方法里,而应该写在构造方法里。这个时候我就有疑问了,因为我是依样画葫芦写的,老师在视频里面也是写在setter里面的,为什么我就不行呢?
后来问了老师后才知道,视频里老师用的是无参构造器,我定义的是有参构造器!!!
所以按照我的思路,正确的代码应该是:
package day05_task;
public class BookTest {
public static void main(String[] args) {
Book b1 = new Book("黑苹果", 100);
Book b2 = new Book("灰栗子", 500);
b1.detail();
b2.detail();
}
}
class Book{ //定义一个类
//Book(){} //构架一个无实参的编译器
Book(String title, int pageNum){ //构建一个有实参的编译器
this.title = title;
if(pageNum < 200) {
this.pageNum = 200;//赋值 变量给当前属性
}else {
this.pageNum = pageNum;
}
}
//私有化类的属性
private String title;
private int pageNum;
void detail(){
System.out.println("书名:" + getTitle() + "\n" + "页数:" + getPageNum() + "\n");
}
//获取可设置属性变量的权限 通过 public 和set语句
public void setTitle(String title){
this.title = title;
}
public String getTitle(){
return title;
}
public void setPageNum(int pageNum){
this.pageNum = pageNum;
}
public int getPageNum(){
return pageNum;
}
}
这周太忙,就写这点点吧。。。
面向对象进阶时,if语句写错位置的更多相关文章
- SQL Server中事务transaction如果没写在try catch中,就算中间语句报错还是会提交
假如我们数据库中有两张表Person和Book Person表: CREATE TABLE [dbo].[Person]( ,) NOT NULL, ) NULL, ) NULL, [CreateTi ...
- 周末班:Python基础之面向对象进阶
面向对象进阶 类型判断 issubclass 首先,我们先看issubclass() 这个内置函数可以帮我们判断x类是否是y类型的子类. class Base: pass class Foo(Base ...
- Python面向对象进阶和socket网络编程-day08
写在前面 上课第八天,打卡: 为什么坚持?想一想当初: 一.面向对象进阶 - 1.反射补充 - 通过字符串去操作一个对象的属性,称之为反射: - 示例1: class Chinese: def __i ...
- Python面向对象进阶和socket网络编程
写在前面 为什么坚持?想一想当初: 一.面向对象进阶 - 1.反射补充 - 通过字符串去操作一个对象的属性,称之为反射: - 示例1: class Chinese: def __init__(self ...
- Python全栈开发【面向对象进阶】
Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...
- day26、面向对象进阶:多态、封装、反射
一.多态 什么是多态: 类的继承有两层意义:1.改变 2.扩展 多态就是类的这两层意义的一个具体的实现机. 即:调用不同类实例化的对象,下的相同的方法,实现的过程不一样 python中的标准类型就是多 ...
- Python开发【第七篇】:面向对象 和 python面向对象进阶篇(下)
Python开发[第七篇]:面向对象 详见:<Python之路[第五篇]:面向对象及相关> python 面向对象(进阶篇) 上一篇<Python 面向对象(初级篇)> ...
- python基础——面向对象进阶下
python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...
- 铁乐学python_day24_面向对象进阶1_内置方法
铁乐学python_day24_面向对象进阶1_内置方法 题外话1: 学习方法[wwwh] what where why how 是什么,用在哪里,为什么,怎么用 学习到一个新知识点的时候,多问问上面 ...
随机推荐
- JVM实战篇
1.1 JVM参数 1.1.1 标准参数 -version -help -server -cp 1.1.2 -X参数 非标准参数,也就是在JDK各个版本中可能会变动 -Xint 解释执行 -Xcomp ...
- whiteboard & coding interview practice
whiteboard & coding interview practice 白板 & 面试 & 编码练习 Algorithm https://www.freecodecamp ...
- 一文搞懂 js 中的各种 for 循环的不同之处
一文搞懂 js 中的各种 for 循环的不同之处 See the Pen for...in vs for...of by xgqfrms (@xgqfrms) on CodePen. for &quo ...
- Dart & import show & import hide & import as & part & part of
Dart & import show & import hide & import as & part & part of // 部分导入,即仅仅导入 dart ...
- Github & DMCA Takedown & git remove history
Github & DMCA Takedown & git remove history Github & DMCA Takedown Policy Removing files ...
- SVG 场馆图
SVG 场馆图 https://www.infoq.cn/article/1BVg9VDSmqyHv3W3TeNH https://mp.weixin.qq.com/s/aNPAfJIHL14NFtL ...
- qt char与code的相互转换
QString str = "A"; QChar c = str.at(0); // int v_latin = c.toLatin1(); // 不能转中文 int v_lati ...
- Python数据结构与算法_回文数(03)
判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121输出: true 示例 2: 输入: -121输出: false解释: 从左向右读, ...
- 深入剖析 ConcurrentHashMap
自建博客地址:https://bytelife.net,欢迎访问! 本文为博客自动同步文章,为了更好的阅读体验,建议您移步至我的博客 本文作者: Jeffrey 本文链接: https://bytel ...
- Python镜像源集合——镜像源更改方法
python在线安装库时会较慢,那是因为python的默认镜像源在国外,因此会慢:而国内有很多可以用的python镜像源,将python镜像源更改为国内的,则可以大大加快python库的安装速度. 1 ...